WORST_CASE(?,O(n^4)) * Step 1: DependencyPairs WORST_CASE(?,O(n^4)) + Considered Problem: - Strict TRS: colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrestthetrick(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite](eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() getAdjs(N(n,ns)) -> ns getColorListFromCN(CN(cl,n)) -> cl getNodeFromCN(CN(cl,n)) -> n getNodeName(N(name,adjs)) -> name graphcolour(Cons(x,xs),cs) -> reverse(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) isPossible(CN(cl,n)) -> True() isPossible(NotPossible()) -> False() notEmpty(Cons(x,xs)) -> True() notEmpty(Nil()) -> False() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() revapp(Cons(x,xs),rest) -> revapp(xs,Cons(x,rest)) revapp(Nil(),rest) -> rest reverse(xs) -> revapp(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) colorrestthetrick[Ite](False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](True(),cs1,cs,ncs,colorednodes,rest) -> colorrest(cs,cs1,colorednodes,rest) possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0 ,NotPossible/0,Red/0,S/1,True/0,Yellow/0,colorrest[Ite][True][Let][Ite]/6} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ,and,colornode,colornode[Ite][True][Ite],colorof ,colorof[Ite][True][Ite],colorrest,colorrest[Ite][True][Let],colorrestthetrick,colorrestthetrick[Ite] ,eqColor,eqColorList,getAdjs,getColorListFromCN,getNodeFromCN,getNodeName,graphcolour,isPossible,notEmpty ,possible,possible[Ite][True][Ite],revapp,reverse} and constructors {0,Blue,CN,Cons,False,N,Nil,NoColor ,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) ,colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColor#(Blue(),Blue()) -> c_8() eqColor#(Blue(),NoColor()) -> c_9() eqColor#(Blue(),Red()) -> c_10() eqColor#(Blue(),Yellow()) -> c_11() eqColor#(NoColor(),b) -> c_12() eqColor#(Red(),Blue()) -> c_13() eqColor#(Red(),NoColor()) -> c_14() eqColor#(Red(),Red()) -> c_15() eqColor#(Red(),Yellow()) -> c_16() eqColor#(Yellow(),Blue()) -> c_17() eqColor#(Yellow(),NoColor()) -> c_18() eqColor#(Yellow(),Red()) -> c_19() eqColor#(Yellow(),Yellow()) -> c_20() eqColorList#(Cons(c1,cs1),Nil()) -> c_21() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() eqColorList#(Nil(),Nil()) -> c_36() getAdjs#(N(n,ns)) -> c_37() getColorListFromCN#(CN(cl,n)) -> c_38() getNodeFromCN#(CN(cl,n)) -> c_39() getNodeName#(N(name,adjs)) -> c_40() graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) isPossible#(CN(cl,n)) -> c_42() isPossible#(NotPossible()) -> c_43() notEmpty#(Cons(x,xs)) -> c_44() notEmpty#(Nil()) -> c_45() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) revapp#(Nil(),rest) -> c_49() reverse#(xs) -> c_50(revapp#(xs,Nil())) Weak DPs !EQ#(0(),0()) -> c_51() !EQ#(0(),S(y)) -> c_52() !EQ#(S(x),0()) -> c_53() !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) and#(False(),False()) -> c_55() and#(False(),True()) -> c_56() and#(True(),False()) -> c_57() and#(True(),True()) -> c_58() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() and mark the set of starting terms. * Step 2: PredecessorEstimation WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) ,colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColor#(Blue(),Blue()) -> c_8() eqColor#(Blue(),NoColor()) -> c_9() eqColor#(Blue(),Red()) -> c_10() eqColor#(Blue(),Yellow()) -> c_11() eqColor#(NoColor(),b) -> c_12() eqColor#(Red(),Blue()) -> c_13() eqColor#(Red(),NoColor()) -> c_14() eqColor#(Red(),Red()) -> c_15() eqColor#(Red(),Yellow()) -> c_16() eqColor#(Yellow(),Blue()) -> c_17() eqColor#(Yellow(),NoColor()) -> c_18() eqColor#(Yellow(),Red()) -> c_19() eqColor#(Yellow(),Yellow()) -> c_20() eqColorList#(Cons(c1,cs1),Nil()) -> c_21() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() eqColorList#(Nil(),Nil()) -> c_36() getAdjs#(N(n,ns)) -> c_37() getColorListFromCN#(CN(cl,n)) -> c_38() getNodeFromCN#(CN(cl,n)) -> c_39() getNodeName#(N(name,adjs)) -> c_40() graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) isPossible#(CN(cl,n)) -> c_42() isPossible#(NotPossible()) -> c_43() notEmpty#(Cons(x,xs)) -> c_44() notEmpty#(Nil()) -> c_45() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) revapp#(Nil(),rest) -> c_49() reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: !EQ#(0(),0()) -> c_51() !EQ#(0(),S(y)) -> c_52() !EQ#(S(x),0()) -> c_53() !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) and#(False(),False()) -> c_55() and#(False(),True()) -> c_56() and#(True(),False()) -> c_57() and#(True(),True()) -> c_58() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) colorrestthetrick(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite](eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](True(),cs1,cs,ncs,colorednodes,rest) -> colorrest(cs,cs1,colorednodes,rest) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() getAdjs(N(n,ns)) -> ns getColorListFromCN(CN(cl,n)) -> cl getNodeFromCN(CN(cl,n)) -> n getNodeName(N(name,adjs)) -> name graphcolour(Cons(x,xs),cs) -> reverse(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) isPossible(CN(cl,n)) -> True() isPossible(NotPossible()) -> False() notEmpty(Cons(x,xs)) -> True() notEmpty(Nil()) -> False() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() revapp(Cons(x,xs),rest) -> revapp(xs,Cons(x,rest)) revapp(Nil(),rest) -> rest reverse(xs) -> revapp(xs,Nil()) - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/2,c_4/0,c_5/2,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/2,c_23/2,c_24/2,c_25/2,c_26/2,c_27/2 ,c_28/2,c_29/2,c_30/2,c_31/2,c_32/2,c_33/2,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/3,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {8,9,10,11,12,13,14,15,16,17,18,19,20,21,35,36,37,38,39,40,42,43,44,45,49} by application of Pre({8,9,10,11,12,13,14,15,16,17,18,19,20,21,35,36,37,38,39,40,42,43,44,45,49}) = {7,22,23,24,25,26,27,28 ,29,30,31,32,33,34,46,48,50}. Here rules are labelled as follows: 1: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) 2: colornode#(Nil(),node,colorednodes) -> c_2() 3: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) 4: colorof#(node,Nil()) -> c_4() 5: colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) ,colornode#(ncs,x,colorednodes)) 6: colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 7: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) 8: eqColor#(Blue(),Blue()) -> c_8() 9: eqColor#(Blue(),NoColor()) -> c_9() 10: eqColor#(Blue(),Red()) -> c_10() 11: eqColor#(Blue(),Yellow()) -> c_11() 12: eqColor#(NoColor(),b) -> c_12() 13: eqColor#(Red(),Blue()) -> c_13() 14: eqColor#(Red(),NoColor()) -> c_14() 15: eqColor#(Red(),Red()) -> c_15() 16: eqColor#(Red(),Yellow()) -> c_16() 17: eqColor#(Yellow(),Blue()) -> c_17() 18: eqColor#(Yellow(),NoColor()) -> c_18() 19: eqColor#(Yellow(),Red()) -> c_19() 20: eqColor#(Yellow(),Yellow()) -> c_20() 21: eqColorList#(Cons(c1,cs1),Nil()) -> c_21() 22: eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 23: eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 24: eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 25: eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 26: eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 27: eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 28: eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 29: eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 30: eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 31: eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 32: eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 33: eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 34: eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) 35: eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() 36: eqColorList#(Nil(),Nil()) -> c_36() 37: getAdjs#(N(n,ns)) -> c_37() 38: getColorListFromCN#(CN(cl,n)) -> c_38() 39: getNodeFromCN#(CN(cl,n)) -> c_39() 40: getNodeName#(N(name,adjs)) -> c_40() 41: graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) 42: isPossible#(CN(cl,n)) -> c_42() 43: isPossible#(NotPossible()) -> c_43() 44: notEmpty#(Cons(x,xs)) -> c_44() 45: notEmpty#(Nil()) -> c_45() 46: possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) 47: possible#(color,Nil(),colorednodes) -> c_47() 48: revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) 49: revapp#(Nil(),rest) -> c_49() 50: reverse#(xs) -> c_50(revapp#(xs,Nil())) 51: !EQ#(0(),0()) -> c_51() 52: !EQ#(0(),S(y)) -> c_52() 53: !EQ#(S(x),0()) -> c_53() 54: !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) 55: and#(False(),False()) -> c_55() 56: and#(False(),True()) -> c_56() 57: and#(True(),False()) -> c_57() 58: and#(True(),True()) -> c_58() 59: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) 60: colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() 61: colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) 62: colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() 63: colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() 64: colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() 65: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) 66: colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) 67: possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) 68: possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() * Step 3: RemoveWeakSuffixes WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) ,colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: !EQ#(0(),0()) -> c_51() !EQ#(0(),S(y)) -> c_52() !EQ#(S(x),0()) -> c_53() !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) and#(False(),False()) -> c_55() and#(False(),True()) -> c_56() and#(True(),False()) -> c_57() and#(True(),True()) -> c_58() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColor#(Blue(),Blue()) -> c_8() eqColor#(Blue(),NoColor()) -> c_9() eqColor#(Blue(),Red()) -> c_10() eqColor#(Blue(),Yellow()) -> c_11() eqColor#(NoColor(),b) -> c_12() eqColor#(Red(),Blue()) -> c_13() eqColor#(Red(),NoColor()) -> c_14() eqColor#(Red(),Red()) -> c_15() eqColor#(Red(),Yellow()) -> c_16() eqColor#(Yellow(),Blue()) -> c_17() eqColor#(Yellow(),NoColor()) -> c_18() eqColor#(Yellow(),Red()) -> c_19() eqColor#(Yellow(),Yellow()) -> c_20() eqColorList#(Cons(c1,cs1),Nil()) -> c_21() eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() eqColorList#(Nil(),Nil()) -> c_36() getAdjs#(N(n,ns)) -> c_37() getColorListFromCN#(CN(cl,n)) -> c_38() getNodeFromCN#(CN(cl,n)) -> c_39() getNodeName#(N(name,adjs)) -> c_40() isPossible#(CN(cl,n)) -> c_42() isPossible#(NotPossible()) -> c_43() notEmpty#(Cons(x,xs)) -> c_44() notEmpty#(Nil()) -> c_45() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() revapp#(Nil(),rest) -> c_49() - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) colorrestthetrick(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite](eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](True(),cs1,cs,ncs,colorednodes,rest) -> colorrest(cs,cs1,colorednodes,rest) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() getAdjs(N(n,ns)) -> ns getColorListFromCN(CN(cl,n)) -> cl getNodeFromCN(CN(cl,n)) -> n getNodeName(N(name,adjs)) -> name graphcolour(Cons(x,xs),cs) -> reverse(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) isPossible(CN(cl,n)) -> True() isPossible(NotPossible()) -> False() notEmpty(Cons(x,xs)) -> True() notEmpty(Nil()) -> False() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() revapp(Cons(x,xs),rest) -> revapp(xs,Cons(x,rest)) revapp(Nil(),rest) -> rest reverse(xs) -> revapp(xs,Nil()) - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/2,c_4/0,c_5/2,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/2,c_23/2,c_24/2,c_25/2,c_26/2,c_27/2 ,c_28/2,c_29/2,c_30/2,c_31/2,c_32/2,c_33/2,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/3,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)):34 -->_2 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)):22 -->_1 colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60():35 -->_2 possible#(color,Nil(),colorednodes) -> c_47():23 2:S:colornode#(Nil(),node,colorednodes) -> c_2() 3:S:colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) -->_1 colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)):36 -->_2 !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)):29 -->_1 colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62():37 -->_2 !EQ#(S(x),0()) -> c_53():28 -->_2 !EQ#(0(),S(y)) -> c_52():27 -->_2 !EQ#(0(),0()) -> c_51():26 4:S:colorof#(node,Nil()) -> c_4() 5:S:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)) -->_1 colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64():39 -->_1 colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63():38 -->_2 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_2 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 6:S:colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 7:S:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)):41 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)):40 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 8:S:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(True(),True()) -> c_58():33 -->_1 and#(True(),False()) -> c_57():32 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 9:S:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 10:S:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 11:S:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 12:S:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 13:S:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 14:S:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 15:S:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(True(),True()) -> c_58():33 -->_1 and#(True(),False()) -> c_57():32 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 16:S:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 17:S:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 18:S:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 19:S:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(False(),True()) -> c_56():31 -->_1 and#(False(),False()) -> c_55():30 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 20:S:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Nil(),Nil()) -> c_36():57 -->_2 eqColorList#(Nil(),Cons(c2,cs2)) -> c_35():56 -->_2 eqColorList#(Cons(c1,cs1),Nil()) -> c_21():55 -->_1 and#(True(),True()) -> c_58():33 -->_1 and#(True(),False()) -> c_57():32 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 21:S:graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) -->_1 reverse#(xs) -> c_50(revapp#(xs,Nil())):25 -->_2 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():6 -->_2 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)):5 -->_3 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_3 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 22:S:possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)):66 -->_1 possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68():67 -->_2 eqColor#(Yellow(),Yellow()) -> c_20():54 -->_2 eqColor#(Yellow(),Red()) -> c_19():53 -->_2 eqColor#(Yellow(),NoColor()) -> c_18():52 -->_2 eqColor#(Yellow(),Blue()) -> c_17():51 -->_2 eqColor#(Red(),Yellow()) -> c_16():50 -->_2 eqColor#(Red(),Red()) -> c_15():49 -->_2 eqColor#(Red(),NoColor()) -> c_14():48 -->_2 eqColor#(Red(),Blue()) -> c_13():47 -->_2 eqColor#(NoColor(),b) -> c_12():46 -->_2 eqColor#(Blue(),Yellow()) -> c_11():45 -->_2 eqColor#(Blue(),Red()) -> c_10():44 -->_2 eqColor#(Blue(),NoColor()) -> c_9():43 -->_2 eqColor#(Blue(),Blue()) -> c_8():42 -->_3 colorof#(node,Nil()) -> c_4():4 -->_3 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs)) ,!EQ#(name,node)):3 23:S:possible#(color,Nil(),colorednodes) -> c_47() 24:S:revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) -->_1 revapp#(Nil(),rest) -> c_49():68 -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):24 25:S:reverse#(xs) -> c_50(revapp#(xs,Nil())) -->_1 revapp#(Nil(),rest) -> c_49():68 -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):24 26:W:!EQ#(0(),0()) -> c_51() 27:W:!EQ#(0(),S(y)) -> c_52() 28:W:!EQ#(S(x),0()) -> c_53() 29:W:!EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) -->_1 !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)):29 -->_1 !EQ#(S(x),0()) -> c_53():28 -->_1 !EQ#(0(),S(y)) -> c_52():27 -->_1 !EQ#(0(),0()) -> c_51():26 30:W:and#(False(),False()) -> c_55() 31:W:and#(False(),True()) -> c_56() 32:W:and#(True(),False()) -> c_57() 33:W:and#(True(),True()) -> c_58() 34:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 35:W:colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() 36:W:colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) -->_1 colorof#(node,Nil()) -> c_4():4 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs)) ,!EQ#(name,node)):3 37:W:colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() 38:W:colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() 39:W:colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() 40:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1 ,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)):7 41:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():6 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)):5 42:W:eqColor#(Blue(),Blue()) -> c_8() 43:W:eqColor#(Blue(),NoColor()) -> c_9() 44:W:eqColor#(Blue(),Red()) -> c_10() 45:W:eqColor#(Blue(),Yellow()) -> c_11() 46:W:eqColor#(NoColor(),b) -> c_12() 47:W:eqColor#(Red(),Blue()) -> c_13() 48:W:eqColor#(Red(),NoColor()) -> c_14() 49:W:eqColor#(Red(),Red()) -> c_15() 50:W:eqColor#(Red(),Yellow()) -> c_16() 51:W:eqColor#(Yellow(),Blue()) -> c_17() 52:W:eqColor#(Yellow(),NoColor()) -> c_18() 53:W:eqColor#(Yellow(),Red()) -> c_19() 54:W:eqColor#(Yellow(),Yellow()) -> c_20() 55:W:eqColorList#(Cons(c1,cs1),Nil()) -> c_21() 56:W:eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() 57:W:eqColorList#(Nil(),Nil()) -> c_36() 58:W:getAdjs#(N(n,ns)) -> c_37() 59:W:getColorListFromCN#(CN(cl,n)) -> c_38() 60:W:getNodeFromCN#(CN(cl,n)) -> c_39() 61:W:getNodeName#(N(name,adjs)) -> c_40() 62:W:isPossible#(CN(cl,n)) -> c_42() 63:W:isPossible#(NotPossible()) -> c_43() 64:W:notEmpty#(Cons(x,xs)) -> c_44() 65:W:notEmpty#(Nil()) -> c_45() 66:W:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) -->_1 possible#(color,Nil(),colorednodes) -> c_47():23 -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)):22 67:W:possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() 68:W:revapp#(Nil(),rest) -> c_49() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 65: notEmpty#(Nil()) -> c_45() 64: notEmpty#(Cons(x,xs)) -> c_44() 63: isPossible#(NotPossible()) -> c_43() 62: isPossible#(CN(cl,n)) -> c_42() 61: getNodeName#(N(name,adjs)) -> c_40() 60: getNodeFromCN#(CN(cl,n)) -> c_39() 59: getColorListFromCN#(CN(cl,n)) -> c_38() 58: getAdjs#(N(n,ns)) -> c_37() 68: revapp#(Nil(),rest) -> c_49() 30: and#(False(),False()) -> c_55() 31: and#(False(),True()) -> c_56() 32: and#(True(),False()) -> c_57() 33: and#(True(),True()) -> c_58() 55: eqColorList#(Cons(c1,cs1),Nil()) -> c_21() 56: eqColorList#(Nil(),Cons(c2,cs2)) -> c_35() 57: eqColorList#(Nil(),Nil()) -> c_36() 38: colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,CN(cl,n)) -> c_63() 39: colorrest[Ite][True][Let]#(cs,ncs,colorednodes,rest,NotPossible()) -> c_64() 35: colornode[Ite][True][Ite]#(True(),cs,node,colorednodes) -> c_60() 37: colorof[Ite][True][Ite]#(True(),node,Cons(CN(Cons(x,xs),n),xs')) -> c_62() 29: !EQ#(S(x),S(y)) -> c_54(!EQ#(x,y)) 26: !EQ#(0(),0()) -> c_51() 27: !EQ#(0(),S(y)) -> c_52() 28: !EQ#(S(x),0()) -> c_53() 42: eqColor#(Blue(),Blue()) -> c_8() 43: eqColor#(Blue(),NoColor()) -> c_9() 44: eqColor#(Blue(),Red()) -> c_10() 45: eqColor#(Blue(),Yellow()) -> c_11() 46: eqColor#(NoColor(),b) -> c_12() 47: eqColor#(Red(),Blue()) -> c_13() 48: eqColor#(Red(),NoColor()) -> c_14() 49: eqColor#(Red(),Red()) -> c_15() 50: eqColor#(Red(),Yellow()) -> c_16() 51: eqColor#(Yellow(),Blue()) -> c_17() 52: eqColor#(Yellow(),NoColor()) -> c_18() 53: eqColor#(Yellow(),Red()) -> c_19() 54: eqColor#(Yellow(),Yellow()) -> c_20() 67: possible[Ite][True][Ite]#(True(),color,adjs,colorednodes) -> c_68() * Step 4: SimplifyRHS WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) ,colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) colorrestthetrick(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite](eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](True(),cs1,cs,ncs,colorednodes,rest) -> colorrest(cs,cs1,colorednodes,rest) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() getAdjs(N(n,ns)) -> ns getColorListFromCN(CN(cl,n)) -> cl getNodeFromCN(CN(cl,n)) -> n getNodeName(N(name,adjs)) -> name graphcolour(Cons(x,xs),cs) -> reverse(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) isPossible(CN(cl,n)) -> True() isPossible(NotPossible()) -> False() notEmpty(Cons(x,xs)) -> True() notEmpty(Nil()) -> False() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() revapp(Cons(x,xs),rest) -> revapp(xs,Cons(x,rest)) revapp(Nil(),rest) -> rest reverse(xs) -> revapp(xs,Nil()) - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/2,c_4/0,c_5/2,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/2,c_23/2,c_24/2,c_25/2,c_26/2,c_27/2 ,c_28/2,c_29/2,c_30/2,c_31/2,c_32/2,c_33/2,c_34/2,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/3,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)):34 -->_2 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)):22 -->_2 possible#(color,Nil(),colorednodes) -> c_47():23 2:S:colornode#(Nil(),node,colorednodes) -> c_2() 3:S:colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) ,!EQ#(name,node)) -->_1 colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)):36 4:S:colorof#(node,Nil()) -> c_4() 5:S:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)) -->_2 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_2 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 6:S:colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 7:S:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)):41 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)):40 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 8:S:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 9:S:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 10:S:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 11:S:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 12:S:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 13:S:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 14:S:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 15:S:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 16:S:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 17:S:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 18:S:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 19:S:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 20:S:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)) -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):20 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):19 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):18 -->_2 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):17 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):16 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):15 -->_2 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):14 -->_2 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):13 -->_2 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):12 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):11 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):10 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(and#(False(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):9 -->_2 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(and#(True(),eqColorList(cs1,cs2)) ,eqColorList#(cs1,cs2)):8 21:S:graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) -->_1 reverse#(xs) -> c_50(revapp#(xs,Nil())):25 -->_2 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():6 -->_2 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)):5 -->_3 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_3 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 22:S:possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)):66 -->_3 colorof#(node,Nil()) -> c_4():4 -->_3 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs)) ,!EQ#(name,node)):3 23:S:possible#(color,Nil(),colorednodes) -> c_47() 24:S:revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):24 25:S:reverse#(xs) -> c_50(revapp#(xs,Nil())) -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):24 34:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 36:W:colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) -->_1 colorof#(node,Nil()) -> c_4():4 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs)) ,!EQ#(name,node)):3 40:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1 ,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)):7 41:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():6 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colorrest[Ite][True][Let]#(cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs ,x ,colorednodes)) ,colornode#(ncs,x,colorednodes)):5 66:W:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) -->_1 possible#(color,Nil(),colorednodes) -> c_47():23 -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,eqColor#(color,colorof(x,colorednodes)) ,colorof#(x,colorednodes)):22 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) * Step 5: UsableRules WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) colorrestthetrick(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite](eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite](True(),cs1,cs,ncs,colorednodes,rest) -> colorrest(cs,cs1,colorednodes,rest) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() getAdjs(N(n,ns)) -> ns getColorListFromCN(CN(cl,n)) -> cl getNodeFromCN(CN(cl,n)) -> n getNodeName(N(name,adjs)) -> name graphcolour(Cons(x,xs),cs) -> reverse(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) isPossible(CN(cl,n)) -> True() isPossible(NotPossible()) -> False() notEmpty(Cons(x,xs)) -> True() notEmpty(Nil()) -> False() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() revapp(Cons(x,xs),rest) -> revapp(xs,Cons(x,rest)) revapp(Nil(),rest) -> rest reverse(xs) -> revapp(xs,Nil()) - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) * Step 6: DecomposeDG WORST_CASE(?,O(n^4)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) and a lower component colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) Further, following extension rules are added to the lower component. colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) ** Step 6.a:1: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)) -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)):5 2:S:graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) ,colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) ,colornode#(cs,x,Nil())) -->_1 reverse#(xs) -> c_50(revapp#(xs,Nil())):4 3:S:revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):3 4:S:reverse#(xs) -> c_50(revapp#(xs,Nil())) -->_1 revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))):3 5:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1 ,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) ,eqColorList#(cs1,ncs)):1 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) ** Step 6.a:2: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/1,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_7) = {1}, uargs(c_41) = {1}, uargs(c_48) = {1}, uargs(c_50) = {1}, uargs(c_65) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [4] x2 + [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [0] p(Cons) = [0] p(False) = [0] p(N) = [1] x1 + [1] x2 + [2] p(Nil) = [0] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [3] p(True) = [0] p(Yellow) = [0] p(and) = [0] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [4] x3 + [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [0] p(colorrest[Ite][True][Let]) = [1] x2 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [1] x5 + [1] x6 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [0] p(eqColorList) = [0] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [0] p(possible[Ite][True][Ite]) = [7] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [0] p(colorrestthetrick[Ite]#) = [0] p(eqColor#) = [1] x1 + [0] p(eqColorList#) = [1] x2 + [0] p(getAdjs#) = [2] x1 + [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [1] x1 + [0] p(graphcolour#) = [4] p(isPossible#) = [1] x1 + [0] p(notEmpty#) = [4] x1 + [0] p(possible#) = [1] x1 + [0] p(possible[Ite][True][Ite]#) = [0] p(revapp#) = [0] p(reverse#) = [0] p(c_1) = [4] x2 + [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [2] x1 + [0] p(c_6) = [2] p(c_7) = [4] x1 + [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [1] x1 + [0] p(c_23) = [0] p(c_24) = [1] x1 + [0] p(c_25) = [0] p(c_26) = [2] x1 + [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [4] x1 + [0] p(c_32) = [1] x1 + [0] p(c_33) = [4] x1 + [0] p(c_34) = [1] x1 + [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [4] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] x1 + [0] p(c_47) = [0] p(c_48) = [1] x1 + [0] p(c_49) = [0] p(c_50) = [4] x1 + [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [2] x1 + [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [2] x1 + [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [4] x1 + [0] p(c_66) = [0] p(c_67) = [0] p(c_68) = [0] Following rules are strictly oriented: graphcolour#(Cons(x,xs),cs) = [4] > [0] = c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) Following rules are (at-least) weakly oriented: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [0] >= [0] = c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [0] >= [0] = c_65(colorrestthetrick#(xs,cs,ncs,colorednodes,rest)) revapp#(Cons(x,xs),rest) = [0] >= [0] = c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) = [0] >= [0] = c_50(revapp#(xs,Nil())) ** Step 6.a:3: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak DPs: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/1,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_7) = {1}, uargs(c_41) = {1}, uargs(c_48) = {1}, uargs(c_50) = {1}, uargs(c_65) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [3] p(0) = [0] p(Blue) = [0] p(CN) = [0] p(Cons) = [2] p(False) = [0] p(N) = [1] x1 + [1] x2 + [0] p(Nil) = [0] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [0] p(True) = [1] p(Yellow) = [0] p(and) = [2] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [1] x1 + [4] x2 + [0] p(colorof) = [1] x1 + [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [2] x3 + [0] p(colorrest[Ite][True][Let]) = [2] x4 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [1] x5 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [2] x1 + [0] p(eqColorList) = [0] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [1] x1 + [0] p(possible[Ite][True][Ite]) = [5] x1 + [0] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [4] x1 + [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [0] p(colorrestthetrick[Ite]#) = [0] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [0] p(graphcolour#) = [2] x1 + [3] p(isPossible#) = [0] p(notEmpty#) = [0] p(possible#) = [0] p(possible[Ite][True][Ite]#) = [0] p(revapp#) = [0] p(reverse#) = [6] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [4] x1 + [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [4] x1 + [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [4] x1 + [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [4] x1 + [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [1] x1 + [1] p(c_42) = [0] p(c_43) = [0] p(c_44) = [2] p(c_45) = [0] p(c_46) = [0] p(c_47) = [2] p(c_48) = [2] x1 + [0] p(c_49) = [0] p(c_50) = [1] x1 + [5] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [2] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [4] x1 + [0] p(c_66) = [1] x1 + [0] p(c_67) = [0] p(c_68) = [0] Following rules are strictly oriented: reverse#(xs) = [6] > [5] = c_50(revapp#(xs,Nil())) Following rules are (at-least) weakly oriented: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [0] >= [0] = c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [0] >= [0] = c_65(colorrestthetrick#(xs,cs,ncs,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) = [7] >= [7] = c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) revapp#(Cons(x,xs),rest) = [0] >= [0] = c_48(revapp#(xs,Cons(x,rest))) ** Step 6.a:4: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) - Weak DPs: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/1,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_7) = {1}, uargs(c_41) = {1}, uargs(c_48) = {1}, uargs(c_50) = {1}, uargs(c_65) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [1] x1 + [0] p(0) = [2] p(Blue) = [0] p(CN) = [0] p(Cons) = [1] x1 + [1] x2 + [2] p(False) = [0] p(N) = [1] x1 + [0] p(Nil) = [1] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [0] p(True) = [0] p(Yellow) = [0] p(and) = [0] p(colornode) = [4] x3 + [4] p(colornode[Ite][True][Ite]) = [6] x1 + [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [4] p(colorrest[Ite][True][Let]) = [0] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [1] x6 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [0] p(eqColorList) = [0] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [1] x2 + [0] p(possible[Ite][True][Ite]) = [0] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [4] x1 + [1] x3 + [5] p(colorrestthetrick[Ite]#) = [4] x2 + [1] x4 + [0] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [0] p(graphcolour#) = [2] x1 + [0] p(isPossible#) = [0] p(notEmpty#) = [0] p(possible#) = [0] p(possible[Ite][True][Ite]#) = [0] p(revapp#) = [0] p(reverse#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [1] x1 + [1] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [1] x1 + [0] p(c_30) = [2] x1 + [0] p(c_31) = [0] p(c_32) = [1] x1 + [2] p(c_33) = [0] p(c_34) = [0] p(c_35) = [4] p(c_36) = [4] p(c_37) = [2] p(c_38) = [4] p(c_39) = [0] p(c_40) = [0] p(c_41) = [4] x1 + [4] p(c_42) = [4] p(c_43) = [1] p(c_44) = [1] p(c_45) = [0] p(c_46) = [1] p(c_47) = [1] p(c_48) = [4] x1 + [0] p(c_49) = [0] p(c_50) = [1] x1 + [0] p(c_51) = [1] p(c_52) = [2] p(c_53) = [4] p(c_54) = [4] p(c_55) = [0] p(c_56) = [2] p(c_57) = [1] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [1] p(c_62) = [4] p(c_63) = [0] p(c_64) = [1] p(c_65) = [1] x1 + [3] p(c_66) = [1] x1 + [0] p(c_67) = [0] p(c_68) = [0] Following rules are strictly oriented: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] cs1 + [1] ncs + [5] > [4] cs1 + [1] ncs + [1] = c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest)) Following rules are (at-least) weakly oriented: colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [1] ncs + [4] x + [4] xs + [8] >= [1] ncs + [4] xs + [8] = c_65(colorrestthetrick#(xs,cs,ncs,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) = [2] x + [2] xs + [4] >= [4] = c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) revapp#(Cons(x,xs),rest) = [0] >= [0] = c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) = [0] >= [0] = c_50(revapp#(xs,Nil())) ** Step 6.a:5: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/1,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_7) = {1}, uargs(c_41) = {1}, uargs(c_48) = {1}, uargs(c_50) = {1}, uargs(c_65) = {1} Following symbols are considered usable: {colorrest,colorrest[Ite][True][Let],!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [7] p(0) = [0] p(Blue) = [0] p(CN) = [0] p(Cons) = [1] x2 + [2] p(False) = [0] p(N) = [1] x1 + [1] x2 + [0] p(Nil) = [0] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [0] p(True) = [4] p(Yellow) = [0] p(and) = [1] x1 + [0] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [7] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [1] x3 + [0] p(colorrest[Ite][True][Let]) = [1] x3 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x6 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [0] p(eqColorList) = [1] x2 + [0] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [4] x2 + [1] x3 + [0] p(possible[Ite][True][Ite]) = [2] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [0] p(colorrestthetrick[Ite]#) = [0] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [0] p(graphcolour#) = [4] x1 + [0] p(isPossible#) = [0] p(notEmpty#) = [0] p(possible#) = [0] p(possible[Ite][True][Ite]#) = [0] p(revapp#) = [4] x1 + [0] p(reverse#) = [4] x1 + [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [4] x1 + [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [1] x1 + [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [0] p(c_47) = [0] p(c_48) = [1] x1 + [6] p(c_49) = [2] p(c_50) = [1] x1 + [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [2] p(c_54) = [2] x1 + [2] p(c_55) = [4] p(c_56) = [0] p(c_57) = [2] p(c_58) = [0] p(c_59) = [1] x1 + [2] p(c_60) = [0] p(c_61) = [1] x1 + [1] p(c_62) = [4] p(c_63) = [2] p(c_64) = [1] p(c_65) = [2] x1 + [0] p(c_66) = [4] x1 + [1] p(c_67) = [1] x1 + [0] p(c_68) = [4] Following rules are strictly oriented: revapp#(Cons(x,xs),rest) = [4] xs + [8] > [4] xs + [6] = c_48(revapp#(xs,Cons(x,rest))) Following rules are (at-least) weakly oriented: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [0] >= [0] = c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [0] >= [0] = c_65(colorrestthetrick#(xs,cs,ncs,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) = [4] xs + [8] >= [8] = c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) reverse#(xs) = [4] xs + [0] >= [4] xs + [0] = c_50(revapp#(xs,Nil())) colorrest(cs,ncs,colorednodes,Cons(x,xs)) = [1] colorednodes + [0] >= [1] colorednodes + [0] = colorrest[Ite][True][Let](cs,ncs,colorednodes,Cons(x,xs),colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) = [1] colorednodes + [0] >= [1] colorednodes + [0] = colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) = [1] colorednodes + [0] >= [0] = colorrest[Ite][True][Let][Ite](True(),cs,ncs,colorednodes,rest,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) = [1] colorednodes + [0] >= [0] = colorrest[Ite][True][Let][Ite](False(),cs,ncs,colorednodes,rest,NotPossible()) ** Step 6.a:6: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> c_7(colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest)) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> c_65(colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest)) graphcolour#(Cons(x,xs),cs) -> c_41(reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs))) revapp#(Cons(x,xs),rest) -> c_48(revapp#(xs,Cons(x,rest))) reverse#(xs) -> c_50(revapp#(xs,Nil())) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/1,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/1,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). ** Step 6.b:1: DecomposeDG WORST_CASE(?,O(n^3)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) and a lower component colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) Further, following extension rules are added to the lower component. colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) *** Step 6.b:1.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)):2 2:S:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 3:S:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 4:S:colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 5:S:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 6:S:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 7:S:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 8:S:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 9:S:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 10:S:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 11:S:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 12:S:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 13:S:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 14:S:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 15:S:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 16:S:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 17:S:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 18:S:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 19:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)):22 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):21 20:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 21:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs):20 -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):19 22:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 23:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 24:W:graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) -->_1 reverse#(xs) -> revapp#(xs,Nil()):26 25:W:revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):25 26:W:reverse#(xs) -> revapp#(xs,Nil()) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):25 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 24: graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) 26: reverse#(xs) -> revapp#(xs,Nil()) 25: revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) *** Step 6.b:1.a:2: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)):2 2:S:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 3:S:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 4:S:colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 5:S:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 6:S:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 7:S:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 8:S:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 9:S:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 10:S:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 11:S:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 12:S:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 13:S:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 14:S:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 15:S:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 16:S:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 17:S:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 18:S:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) ,possible#(x,ns,colorednodes)):1 19:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)):22 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):21 20:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 21:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs):20 -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):19 22:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 23:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) *** Step 6.b:1.a:3: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:4: RemoveHeads WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)):2 2:S:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs ,node ,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)):1 3:S:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)):1 4:S:colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() 5:S:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 6:S:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 7:S:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 8:S:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 9:S:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 10:S:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 11:S:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 12:S:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 13:S:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 14:S:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 15:S:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 16:S:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 17:S:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 18:S:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)):1 19:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)):22 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):21 20:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)):17 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)):16 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)):15 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)):14 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)):13 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)):12 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)):11 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)):10 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)):9 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)):8 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)):7 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)):6 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)):5 21:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs):20 -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):19 22:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs ,cs1 ,colorednodes ,rest)) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 23:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Nil()) -> c_6():4 -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)):3 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(18,graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()))] *** Step 6.b:1.a:5: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) - Weak DPs: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_5) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_24) = {1}, uargs(c_25) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1}, uargs(c_30) = {1}, uargs(c_31) = {1}, uargs(c_32) = {1}, uargs(c_33) = {1}, uargs(c_34) = {1}, uargs(c_59) = {1}, uargs(c_66) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [5] x1 + [4] x2 + [4] p(0) = [1] p(Blue) = [4] p(CN) = [7] p(Cons) = [1] x1 + [1] x2 + [1] p(False) = [0] p(N) = [4] p(Nil) = [1] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] p(True) = [0] p(Yellow) = [1] p(and) = [2] x1 + [0] p(colornode) = [1] x2 + [4] p(colornode[Ite][True][Ite]) = [1] x1 + [2] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [2] x1 + [0] p(colorrest) = [1] x1 + [2] x2 + [0] p(colorrest[Ite][True][Let]) = [1] x1 + [1] x2 + [1] x4 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [1] x6 + [1] p(colorrestthetrick) = [1] x2 + [1] x4 + [2] p(colorrestthetrick[Ite]) = [1] x2 + [1] x5 + [4] p(eqColor) = [1] x1 + [1] p(eqColorList) = [0] p(getAdjs) = [1] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [2] x1 + [1] p(isPossible) = [1] x1 + [0] p(notEmpty) = [1] x1 + [1] p(possible) = [0] p(possible[Ite][True][Ite]) = [5] x1 + [2] x2 + [5] x3 + [2] x4 + [1] p(revapp) = [4] p(reverse) = [2] p(!EQ#) = [4] x1 + [4] p(and#) = [4] p(colornode#) = [2] x2 + [0] p(colornode[Ite][True][Ite]#) = [2] x3 + [0] p(colorof#) = [1] x2 + [0] p(colorof[Ite][True][Ite]#) = [1] x2 + [1] x3 + [4] p(colorrest#) = [4] x4 + [0] p(colorrest[Ite][True][Let]#) = [1] x2 + [4] x3 + [1] x4 + [2] p(colorrestthetrick#) = [4] x5 + [4] p(colorrestthetrick[Ite]#) = [4] x6 + [4] p(eqColor#) = [1] x1 + [2] x2 + [1] p(eqColorList#) = [0] p(getAdjs#) = [2] p(getColorListFromCN#) = [1] x1 + [0] p(getNodeFromCN#) = [1] x1 + [1] p(getNodeName#) = [0] p(graphcolour#) = [4] x1 + [1] x2 + [4] p(isPossible#) = [1] p(notEmpty#) = [4] p(possible#) = [1] x1 + [4] x2 + [2] x3 + [0] p(possible[Ite][True][Ite]#) = [1] p(revapp#) = [1] p(reverse#) = [1] p(c_1) = [1] x1 + [0] p(c_2) = [1] p(c_3) = [2] x1 + [1] p(c_4) = [0] p(c_5) = [2] x1 + [1] p(c_6) = [3] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [4] p(c_11) = [1] p(c_12) = [1] p(c_13) = [1] p(c_14) = [1] p(c_15) = [1] p(c_16) = [1] p(c_17) = [0] p(c_18) = [4] p(c_19) = [1] p(c_20) = [1] p(c_21) = [0] p(c_22) = [4] x1 + [0] p(c_23) = [2] x1 + [0] p(c_24) = [4] x1 + [0] p(c_25) = [4] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [2] x1 + [0] p(c_28) = [2] x1 + [0] p(c_29) = [1] x1 + [0] p(c_30) = [2] x1 + [0] p(c_31) = [1] x1 + [0] p(c_32) = [1] x1 + [0] p(c_33) = [4] x1 + [0] p(c_34) = [4] x1 + [0] p(c_35) = [1] p(c_36) = [1] p(c_37) = [1] p(c_38) = [1] p(c_39) = [0] p(c_40) = [1] p(c_41) = [1] x1 + [1] p(c_42) = [2] p(c_43) = [0] p(c_44) = [0] p(c_45) = [1] p(c_46) = [1] x1 + [4] p(c_47) = [0] p(c_48) = [1] x1 + [0] p(c_49) = [2] p(c_50) = [2] x1 + [2] p(c_51) = [0] p(c_52) = [1] p(c_53) = [2] p(c_54) = [1] x1 + [0] p(c_55) = [1] p(c_56) = [2] p(c_57) = [1] p(c_58) = [0] p(c_59) = [1] x1 + [0] p(c_60) = [1] p(c_61) = [0] p(c_62) = [0] p(c_63) = [1] p(c_64) = [1] p(c_65) = [2] x1 + [0] p(c_66) = [1] x1 + [4] p(c_67) = [1] x1 + [0] p(c_68) = [1] Following rules are strictly oriented: colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [4] x + [4] xs + [4] > [4] x + [1] = c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) = [4] > [3] = c_6() Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [8] >= [8] = c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [2] node + [0] >= [2] node + [0] = c_59(colornode#(xs,node,colorednodes)) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] rest + [4] >= [4] rest + [4] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] rest + [4] >= [0] = eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [4] rest + [4] >= [4] rest + [4] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [4] rest + [4] >= [4] rest + [4] = c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) = [0] >= [0] = c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) = [1] cs + [4] x + [4] xs + [8] >= [4] xs + [0] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:6: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) - Weak DPs: colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_5) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_24) = {1}, uargs(c_25) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1}, uargs(c_30) = {1}, uargs(c_31) = {1}, uargs(c_32) = {1}, uargs(c_33) = {1}, uargs(c_34) = {1}, uargs(c_59) = {1}, uargs(c_66) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [2] x1 + [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [1] x2 + [0] p(Cons) = [1] x1 + [1] x2 + [0] p(False) = [0] p(N) = [0] p(Nil) = [1] p(NoColor) = [0] p(NotPossible) = [1] p(Red) = [2] p(S) = [1] p(True) = [0] p(Yellow) = [4] p(and) = [2] x2 + [1] p(colornode) = [4] x1 + [2] x3 + [0] p(colornode[Ite][True][Ite]) = [0] p(colorof) = [1] x1 + [0] p(colorof[Ite][True][Ite]) = [1] x1 + [1] x2 + [3] p(colorrest) = [1] x1 + [4] x2 + [1] x4 + [1] p(colorrest[Ite][True][Let]) = [1] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [1] x3 + [1] x5 + [1] p(colorrestthetrick) = [1] x1 + [2] x2 + [1] x3 + [1] x4 + [0] p(colorrestthetrick[Ite]) = [4] x1 + [1] x2 + [2] x3 + [1] x4 + [4] x6 + [1] p(eqColor) = [6] p(eqColorList) = [2] x2 + [0] p(getAdjs) = [1] p(getColorListFromCN) = [1] p(getNodeFromCN) = [1] p(getNodeName) = [0] p(graphcolour) = [1] x1 + [2] p(isPossible) = [1] x1 + [0] p(notEmpty) = [2] x1 + [0] p(possible) = [4] x3 + [0] p(possible[Ite][True][Ite]) = [2] x1 + [7] x2 + [4] x4 + [0] p(revapp) = [2] x1 + [1] x2 + [0] p(reverse) = [1] x1 + [0] p(!EQ#) = [1] x1 + [1] x2 + [1] p(and#) = [1] x1 + [2] x2 + [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [4] x2 + [4] p(colorof[Ite][True][Ite]#) = [2] x1 + [4] x3 + [0] p(colorrest#) = [3] x1 + [2] x2 + [0] p(colorrest[Ite][True][Let]#) = [1] x1 + [4] x3 + [1] x4 + [1] p(colorrestthetrick#) = [3] x1 + [3] x2 + [5] x3 + [2] x4 + [1] p(colorrestthetrick[Ite]#) = [3] x2 + [3] x3 + [5] x4 + [2] x5 + [1] p(eqColor#) = [2] x1 + [2] x2 + [0] p(eqColorList#) = [2] x1 + [0] p(getAdjs#) = [1] p(getColorListFromCN#) = [1] p(getNodeFromCN#) = [1] x1 + [1] p(getNodeName#) = [1] x1 + [0] p(graphcolour#) = [6] x2 + [0] p(isPossible#) = [4] x1 + [1] p(notEmpty#) = [1] p(possible#) = [2] x1 + [0] p(possible[Ite][True][Ite]#) = [4] x1 + [1] x3 + [1] x4 + [0] p(revapp#) = [2] x1 + [1] x2 + [2] p(reverse#) = [4] x1 + [4] p(c_1) = [2] x1 + [0] p(c_2) = [0] p(c_3) = [2] x1 + [4] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [0] p(c_7) = [4] x1 + [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [1] p(c_14) = [2] p(c_15) = [4] p(c_16) = [1] p(c_17) = [1] p(c_18) = [0] p(c_19) = [2] p(c_20) = [1] p(c_21) = [1] p(c_22) = [1] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [1] x1 + [0] p(c_25) = [1] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [1] x1 + [4] p(c_28) = [1] x1 + [4] p(c_29) = [1] x1 + [4] p(c_30) = [1] x1 + [4] p(c_31) = [1] x1 + [0] p(c_32) = [1] x1 + [2] p(c_33) = [1] x1 + [1] p(c_34) = [1] x1 + [4] p(c_35) = [4] p(c_36) = [0] p(c_37) = [1] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [2] x1 + [0] p(c_42) = [0] p(c_43) = [1] p(c_44) = [2] p(c_45) = [2] p(c_46) = [4] x1 + [1] x2 + [0] p(c_47) = [0] p(c_48) = [1] x1 + [0] p(c_49) = [4] p(c_50) = [1] p(c_51) = [2] p(c_52) = [0] p(c_53) = [0] p(c_54) = [1] x1 + [2] p(c_55) = [1] p(c_56) = [1] p(c_57) = [0] p(c_58) = [1] p(c_59) = [4] x1 + [0] p(c_60) = [0] p(c_61) = [4] p(c_62) = [0] p(c_63) = [0] p(c_64) = [1] p(c_65) = [0] p(c_66) = [1] x1 + [1] p(c_67) = [1] x1 + [1] p(c_68) = [0] Following rules are strictly oriented: eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [8] > [2] cs1 + [0] = c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [8] > [2] cs1 + [2] = c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [2] cs1 + [8] > [2] cs1 + [1] = c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [8] > [2] cs1 + [4] = c_34(eqColorList#(cs1,cs2)) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [0] >= [0] = c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [0] >= [0] = c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [3] cs + [2] ncs + [0] >= [0] = c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) = [3] cs + [2] ncs + [0] >= [0] = c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [2] colorednodes + [3] cs + [3] cs1 + [5] ncs + [1] >= [2] colorednodes + [3] cs + [3] cs1 + [5] ncs + [1] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [2] colorednodes + [3] cs + [3] cs1 + [5] ncs + [1] >= [2] cs1 + [0] = eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [2] colorednodes + [3] cs + [5] ncs + [3] x + [3] xs + [1] >= [2] colorednodes + [3] cs + [5] ncs + [3] xs + [1] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [2] colorednodes + [3] cs + [3] cs1 + [5] ncs + [1] >= [3] cs + [2] cs1 + [1] = c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [0] >= [2] cs1 + [0] = c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [0] >= [2] cs1 + [0] = c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) = [2] cs1 + [0] >= [2] cs1 + [0] = c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [0] >= [2] cs1 + [0] = c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) = [2] cs1 + [0] >= [2] cs1 + [0] = c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [4] >= [2] cs1 + [4] = c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [4] >= [2] cs1 + [4] = c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) = [2] cs1 + [4] >= [2] cs1 + [4] = c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [4] >= [2] cs1 + [4] = c_30(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) = [6] cs + [0] >= [5] cs + [0] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:7: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) - Weak DPs: colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_5) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_24) = {1}, uargs(c_25) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1}, uargs(c_30) = {1}, uargs(c_31) = {1}, uargs(c_32) = {1}, uargs(c_33) = {1}, uargs(c_34) = {1}, uargs(c_59) = {1}, uargs(c_66) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [2] x1 + [4] x2 + [0] p(0) = [0] p(Blue) = [0] p(CN) = [7] p(Cons) = [1] x2 + [4] p(False) = [0] p(N) = [0] p(Nil) = [2] p(NoColor) = [0] p(NotPossible) = [1] p(Red) = [1] p(S) = [2] p(True) = [0] p(Yellow) = [2] p(and) = [0] p(colornode) = [1] x1 + [2] x2 + [4] x3 + [5] p(colornode[Ite][True][Ite]) = [1] x1 + [1] x3 + [2] p(colorof) = [2] x1 + [2] x2 + [2] p(colorof[Ite][True][Ite]) = [1] x1 + [4] x2 + [7] p(colorrest) = [4] x1 + [1] x2 + [1] x3 + [1] p(colorrest[Ite][True][Let]) = [4] x2 + [1] x3 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x1 + [1] x6 + [0] p(colorrestthetrick) = [4] x3 + [2] x5 + [0] p(colorrestthetrick[Ite]) = [2] x1 + [1] x3 + [1] x4 + [1] x6 + [1] p(eqColor) = [1] x2 + [0] p(eqColorList) = [0] p(getAdjs) = [1] x1 + [1] p(getColorListFromCN) = [4] p(getNodeFromCN) = [4] x1 + [0] p(getNodeName) = [4] p(graphcolour) = [1] x2 + [2] p(isPossible) = [2] x1 + [4] p(notEmpty) = [0] p(possible) = [0] p(possible[Ite][True][Ite]) = [2] x1 + [3] x2 + [2] x4 + [0] p(revapp) = [4] p(reverse) = [0] p(!EQ#) = [2] x2 + [0] p(and#) = [1] x1 + [1] x2 + [0] p(colornode#) = [0] p(colornode[Ite][True][Ite]#) = [0] p(colorof#) = [1] x2 + [0] p(colorof[Ite][True][Ite]#) = [1] x1 + [1] x3 + [0] p(colorrest#) = [2] x2 + [0] p(colorrest[Ite][True][Let]#) = [4] x1 + [2] x3 + [1] x5 + [0] p(colorrestthetrick#) = [3] x1 + [2] p(colorrestthetrick[Ite]#) = [3] x2 + [1] p(eqColor#) = [1] x1 + [1] x2 + [1] p(eqColorList#) = [2] x1 + [0] p(getAdjs#) = [1] p(getColorListFromCN#) = [2] p(getNodeFromCN#) = [2] x1 + [1] p(getNodeName#) = [4] x1 + [1] p(graphcolour#) = [1] x1 + [4] x2 + [0] p(isPossible#) = [4] x1 + [4] p(notEmpty#) = [0] p(possible#) = [1] x3 + [1] p(possible[Ite][True][Ite]#) = [1] x3 + [4] x4 + [1] p(revapp#) = [0] p(reverse#) = [1] p(c_1) = [4] x1 + [0] p(c_2) = [4] p(c_3) = [1] p(c_4) = [0] p(c_5) = [4] x1 + [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [1] p(c_10) = [1] p(c_11) = [1] p(c_12) = [1] p(c_13) = [0] p(c_14) = [4] p(c_15) = [1] p(c_16) = [1] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [2] p(c_21) = [0] p(c_22) = [1] x1 + [4] p(c_23) = [1] x1 + [0] p(c_24) = [1] x1 + [0] p(c_25) = [1] x1 + [6] p(c_26) = [1] x1 + [5] p(c_27) = [1] x1 + [2] p(c_28) = [1] x1 + [5] p(c_29) = [1] x1 + [7] p(c_30) = [1] x1 + [4] p(c_31) = [1] x1 + [2] p(c_32) = [1] x1 + [2] p(c_33) = [1] x1 + [4] p(c_34) = [1] x1 + [0] p(c_35) = [2] p(c_36) = [0] p(c_37) = [4] p(c_38) = [1] p(c_39) = [1] p(c_40) = [1] p(c_41) = [1] p(c_42) = [1] p(c_43) = [1] p(c_44) = [0] p(c_45) = [1] p(c_46) = [4] x1 + [4] x2 + [1] p(c_47) = [0] p(c_48) = [0] p(c_49) = [1] p(c_50) = [2] x1 + [0] p(c_51) = [2] p(c_52) = [1] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [1] p(c_57) = [2] p(c_58) = [1] p(c_59) = [4] x1 + [0] p(c_60) = [1] p(c_61) = [1] p(c_62) = [4] p(c_63) = [2] p(c_64) = [0] p(c_65) = [2] p(c_66) = [1] x1 + [1] p(c_67) = [1] x1 + [1] p(c_68) = [0] Following rules are strictly oriented: eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [8] > [2] cs1 + [4] = c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [8] > [2] cs1 + [0] = c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) = [2] cs1 + [8] > [2] cs1 + [0] = c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [8] > [2] cs1 + [6] = c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) = [2] cs1 + [8] > [2] cs1 + [5] = c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [8] > [2] cs1 + [2] = c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [8] > [2] cs1 + [5] = c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) = [2] cs1 + [8] > [2] cs1 + [7] = c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [8] > [2] cs1 + [4] = c_30(eqColorList#(cs1,cs2)) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [0] >= [0] = c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [0] >= [0] = c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [2] ncs + [0] >= [0] = c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) = [2] ncs + [0] >= [0] = c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [3] cs1 + [2] >= [3] cs1 + [1] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [3] cs1 + [2] >= [2] cs1 + [0] = eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [3] xs + [13] >= [3] xs + [2] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [3] cs1 + [1] >= [2] cs1 + [1] = c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [2] cs1 + [8] >= [2] cs1 + [2] = c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [2] cs1 + [8] >= [2] cs1 + [2] = c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [2] cs1 + [8] >= [2] cs1 + [4] = c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [2] cs1 + [8] >= [2] cs1 + [0] = c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) = [4] cs + [1] xs + [4] >= [2] cs + [0] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:8: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) - Weak DPs: colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_5) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_24) = {1}, uargs(c_25) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1}, uargs(c_30) = {1}, uargs(c_31) = {1}, uargs(c_32) = {1}, uargs(c_33) = {1}, uargs(c_34) = {1}, uargs(c_59) = {1}, uargs(c_66) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [1] x2 + [0] p(Cons) = [1] x1 + [1] x2 + [2] p(False) = [0] p(N) = [2] p(Nil) = [0] p(NoColor) = [6] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [0] p(True) = [0] p(Yellow) = [6] p(and) = [0] p(colornode) = [6] x2 + [0] p(colornode[Ite][True][Ite]) = [1] x3 + [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [0] p(colorrest[Ite][True][Let]) = [0] p(colorrest[Ite][True][Let][Ite]) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [1] x5 + [1] x6 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [2] x1 + [1] p(eqColorList) = [1] x2 + [5] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [0] p(possible[Ite][True][Ite]) = [4] x1 + [4] x2 + [2] x3 + [0] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [2] x1 + [4] x2 + [0] p(colornode[Ite][True][Ite]#) = [2] x2 + [4] x3 + [0] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [2] x2 + [4] x4 + [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [2] x1 + [4] x5 + [0] p(colorrestthetrick[Ite]#) = [2] x2 + [4] x6 + [0] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [1] p(graphcolour#) = [4] x1 + [2] x2 + [3] p(isPossible#) = [1] x1 + [0] p(notEmpty#) = [0] p(possible#) = [1] x1 + [0] p(possible[Ite][True][Ite]#) = [2] x2 + [1] x3 + [0] p(revapp#) = [0] p(reverse#) = [2] x1 + [1] p(c_1) = [1] x1 + [0] p(c_2) = [2] p(c_3) = [0] p(c_4) = [0] p(c_5) = [1] x1 + [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [1] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [1] p(c_14) = [0] p(c_15) = [1] p(c_16) = [0] p(c_17) = [0] p(c_18) = [4] p(c_19) = [2] p(c_20) = [2] p(c_21) = [2] p(c_22) = [4] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [4] x1 + [0] p(c_25) = [2] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [1] x1 + [0] p(c_28) = [1] x1 + [0] p(c_29) = [4] x1 + [0] p(c_30) = [1] x1 + [0] p(c_31) = [1] x1 + [0] p(c_32) = [1] x1 + [0] p(c_33) = [1] x1 + [0] p(c_34) = [4] x1 + [0] p(c_35) = [0] p(c_36) = [1] p(c_37) = [1] p(c_38) = [4] p(c_39) = [1] p(c_40) = [0] p(c_41) = [1] x2 + [1] x3 + [0] p(c_42) = [1] p(c_43) = [0] p(c_44) = [1] p(c_45) = [0] p(c_46) = [1] p(c_47) = [1] p(c_48) = [1] p(c_49) = [0] p(c_50) = [2] x1 + [1] p(c_51) = [1] p(c_52) = [1] p(c_53) = [1] p(c_54) = [0] p(c_55) = [1] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [1] x1 + [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [1] p(c_63) = [1] p(c_64) = [2] p(c_65) = [0] p(c_66) = [1] x1 + [0] p(c_67) = [0] p(c_68) = [0] Following rules are strictly oriented: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [4] node + [2] x + [2] xs + [4] > [4] node + [2] xs + [0] = c_59(colornode#(xs,node,colorednodes)) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] x + [2] xs + [12] >= [2] x + [2] xs + [12] = c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [2] ncs + [4] x + [4] xs + [8] >= [2] ncs + [4] x + [0] = c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) = [2] ncs + [0] >= [0] = c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [2] cs1 + [4] rest + [0] >= [2] cs1 + [4] rest + [0] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [2] cs1 + [4] rest + [0] >= [0] = eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [4] rest + [2] x + [2] xs + [4] >= [4] rest + [2] xs + [0] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [2] cs1 + [4] rest + [0] >= [2] cs1 + [4] rest + [0] = c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) = [0] >= [0] = c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) = [2] cs + [4] x + [4] xs + [11] >= [2] cs + [4] xs + [0] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:9: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) - Weak DPs: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_1) = {1}, uargs(c_5) = {1}, uargs(c_22) = {1}, uargs(c_23) = {1}, uargs(c_24) = {1}, uargs(c_25) = {1}, uargs(c_26) = {1}, uargs(c_27) = {1}, uargs(c_28) = {1}, uargs(c_29) = {1}, uargs(c_30) = {1}, uargs(c_31) = {1}, uargs(c_32) = {1}, uargs(c_33) = {1}, uargs(c_34) = {1}, uargs(c_59) = {1}, uargs(c_66) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [2] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [3] p(Cons) = [1] x1 + [1] x2 + [1] p(False) = [0] p(N) = [3] p(Nil) = [2] p(NoColor) = [0] p(NotPossible) = [4] p(Red) = [1] p(S) = [0] p(True) = [0] p(Yellow) = [1] p(and) = [6] p(colornode) = [1] x2 + [4] x3 + [0] p(colornode[Ite][True][Ite]) = [2] x1 + [2] x3 + [1] x4 + [1] p(colorof) = [2] x2 + [3] p(colorof[Ite][True][Ite]) = [3] x1 + [2] x2 + [2] p(colorrest) = [1] x1 + [1] x3 + [1] p(colorrest[Ite][True][Let]) = [1] x1 + [2] x2 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [1] x4 + [1] p(colorrestthetrick) = [1] x2 + [4] p(colorrestthetrick[Ite]) = [4] x2 + [1] x6 + [0] p(eqColor) = [4] p(eqColorList) = [5] x1 + [2] p(getAdjs) = [1] x1 + [0] p(getColorListFromCN) = [1] x1 + [0] p(getNodeFromCN) = [2] x1 + [4] p(getNodeName) = [2] x1 + [0] p(graphcolour) = [4] x2 + [0] p(isPossible) = [1] x1 + [2] p(notEmpty) = [1] x1 + [1] p(possible) = [0] p(possible[Ite][True][Ite]) = [1] x1 + [1] x2 + [4] x3 + [4] x4 + [0] p(revapp) = [1] x1 + [2] x2 + [4] p(reverse) = [0] p(!EQ#) = [1] x1 + [1] x2 + [0] p(and#) = [1] x1 + [1] x2 + [2] p(colornode#) = [2] x1 + [4] x2 + [1] p(colornode[Ite][True][Ite]#) = [2] x2 + [4] x3 + [0] p(colorof#) = [1] x2 + [1] p(colorof[Ite][True][Ite]#) = [1] x1 + [0] p(colorrest#) = [2] x1 + [4] x2 + [4] x4 + [3] p(colorrest[Ite][True][Let]#) = [1] x5 + [1] p(colorrestthetrick#) = [4] x1 + [4] x2 + [3] x3 + [4] x5 + [4] p(colorrestthetrick[Ite]#) = [4] x2 + [4] x3 + [3] x4 + [4] x6 + [4] p(eqColor#) = [1] x1 + [0] p(eqColorList#) = [0] p(getAdjs#) = [1] x1 + [1] p(getColorListFromCN#) = [1] p(getNodeFromCN#) = [1] p(getNodeName#) = [1] p(graphcolour#) = [4] x1 + [7] x2 + [1] p(isPossible#) = [1] x1 + [4] p(notEmpty#) = [1] p(possible#) = [4] x3 + [4] p(possible[Ite][True][Ite]#) = [1] x3 + [2] x4 + [0] p(revapp#) = [1] x2 + [1] p(reverse#) = [0] p(c_1) = [1] x1 + [0] p(c_2) = [0] p(c_3) = [1] x1 + [0] p(c_4) = [2] p(c_5) = [1] x1 + [6] p(c_6) = [1] p(c_7) = [1] x2 + [4] p(c_8) = [4] p(c_9) = [0] p(c_10) = [0] p(c_11) = [1] p(c_12) = [4] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [2] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [2] p(c_21) = [0] p(c_22) = [2] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [2] x1 + [0] p(c_25) = [4] x1 + [0] p(c_26) = [2] x1 + [0] p(c_27) = [2] x1 + [0] p(c_28) = [4] x1 + [0] p(c_29) = [4] x1 + [0] p(c_30) = [2] x1 + [0] p(c_31) = [1] x1 + [0] p(c_32) = [4] x1 + [0] p(c_33) = [4] x1 + [0] p(c_34) = [4] x1 + [0] p(c_35) = [0] p(c_36) = [1] p(c_37) = [1] p(c_38) = [1] p(c_39) = [0] p(c_40) = [2] p(c_41) = [1] x1 + [1] x2 + [1] x3 + [0] p(c_42) = [0] p(c_43) = [1] p(c_44) = [1] p(c_45) = [4] p(c_46) = [0] p(c_47) = [0] p(c_48) = [1] x1 + [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [2] p(c_52) = [0] p(c_53) = [2] p(c_54) = [1] x1 + [1] p(c_55) = [1] p(c_56) = [1] p(c_57) = [0] p(c_58) = [4] p(c_59) = [1] x1 + [1] p(c_60) = [2] p(c_61) = [1] p(c_62) = [0] p(c_63) = [4] p(c_64) = [0] p(c_65) = [4] x1 + [4] p(c_66) = [1] x1 + [0] p(c_67) = [2] x1 + [4] p(c_68) = [1] Following rules are strictly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] x + [2] xs + [15] > [2] x + [2] xs + [14] = c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes)) Following rules are (at-least) weakly oriented: colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [4] node + [2] x + [2] xs + [2] >= [4] node + [2] xs + [2] = c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [2] cs + [4] ncs + [4] x + [4] xs + [7] >= [2] ncs + [4] x + [7] = c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) = [2] cs + [4] ncs + [11] >= [1] = c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] cs + [4] cs1 + [3] ncs + [4] rest + [4] >= [4] cs + [4] cs1 + [3] ncs + [4] rest + [4] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] cs + [4] cs1 + [3] ncs + [4] rest + [4] >= [0] = eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [4] cs + [3] ncs + [4] rest + [4] x + [4] xs + [8] >= [4] cs + [3] ncs + [4] rest + [4] xs + [4] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [4] cs + [4] cs1 + [3] ncs + [4] rest + [4] >= [2] cs + [4] cs1 + [4] rest + [3] = c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) = [0] >= [0] = c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [0] >= [0] = c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) = [7] cs + [4] x + [4] xs + [5] >= [6] cs + [4] xs + [3] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) *** Step 6.b:1.a:10: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> c_1(colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes)) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> c_59(colornode#(xs,node,colorednodes)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> c_5(colornode#(ncs,x,colorednodes)) colorrest#(cs,ncs,colorednodes,Nil()) -> c_6() colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> c_66(colorrest#(cs,cs1,colorednodes,rest)) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> c_22(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> c_23(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> c_24(eqColorList#(cs1,cs2)) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> c_25(eqColorList#(cs1,cs2)) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> c_26(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> c_27(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> c_28(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> c_29(eqColorList#(cs1,cs2)) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> c_30(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> c_31(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> c_32(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> c_33(eqColorList#(cs1,cs2)) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> c_34(eqColorList#(cs1,cs2)) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/1,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). *** Step 6.b:1.b:1: DecomposeDG WORST_CASE(?,O(n^2)) + Considered Problem: - Strict DPs: colornode#(Nil(),node,colorednodes) -> c_2() colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: DecomposeDG {onSelection = all below first cut in WDG, onUpper = Nothing, onLower = Nothing} + Details: We decompose the input problem according to the dependency graph into the upper component colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) and a lower component colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) possible#(color,Nil(),colorednodes) -> c_47() Further, following extension rules are added to the lower component. colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) **** Step 6.b:1.b:1.a:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)):3 2:S:colornode#(Nil(),node,colorednodes) -> c_2() 3:S:possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)):4 4:S:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)):3 5:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs ,node ,colorednodes):6 6:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 7:W:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 8:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs ,cs1 ,colorednodes ,rest):11 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):10 9:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 10:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs):9 -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):8 11:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 12:W:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 13:W:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 14:W:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 15:W:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 16:W:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 17:W:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 18:W:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 19:W:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 20:W:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 21:W:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 22:W:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 23:W:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 24:W:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):13 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):12 25:W:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 26:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 27:W:graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) -->_1 reverse#(xs) -> revapp#(xs,Nil()):29 28:W:revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):28 29:W:reverse#(xs) -> revapp#(xs,Nil()) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):28 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 27: graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) 29: reverse#(xs) -> revapp#(xs,Nil()) 28: revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) 9: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) 24: eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 23: eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 22: eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 21: eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) 20: eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 19: eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 18: eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 17: eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) 16: eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) 15: eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 14: eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 13: eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 12: eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) **** Step 6.b:1.b:1.a:2: SimplifyRHS WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: SimplifyRHS + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)):3 2:S:colornode#(Nil(),node,colorednodes) -> c_2() 3:S:possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)):4 4:S:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) ,colorof#(x,colorednodes)):3 5:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs ,node ,colorednodes):6 6:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 7:W:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 8:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs ,cs1 ,colorednodes ,rest):11 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):10 10:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):8 11:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 25:W:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 26:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) **** Step 6.b:1.b:1.a:3: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) **** Step 6.b:1.b:1.a:4: RemoveHeads WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)):3 2:S:colornode#(Nil(),node,colorednodes) -> c_2() 3:S:possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)):4 4:S:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color ,xs ,colorednodes)) -->_1 possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)):3 5:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs ,node ,colorednodes):6 6:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 7:W:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 8:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs ,cs1 ,colorednodes ,rest):10 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):9 9:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):8 10:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 11:W:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x ,ns ,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):5 -->_1 colornode#(Nil(),node,colorednodes) -> c_2():2 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):1 12:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):7 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(11,graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()))] **** Step 6.b:1.b:1.a:5: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_46) = {1}, uargs(c_67) = {1} Following symbols are considered usable: {and,eqColorList,!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]# ,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList# ,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [0] p(Cons) = [0] p(False) = [0] p(N) = [0] p(Nil) = [0] p(NoColor) = [7] p(NotPossible) = [0] p(Red) = [0] p(S) = [0] p(True) = [0] p(Yellow) = [0] p(and) = [0] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [0] p(colorrest[Ite][True][Let]) = [0] p(colorrest[Ite][True][Let][Ite]) = [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [2] x2 + [0] p(eqColorList) = [0] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [0] p(possible[Ite][True][Ite]) = [0] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [5] p(colornode[Ite][True][Ite]#) = [5] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [5] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [5] p(colorrestthetrick[Ite]#) = [5] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [0] p(graphcolour#) = [5] p(isPossible#) = [0] p(notEmpty#) = [0] p(possible#) = [1] p(possible[Ite][True][Ite]#) = [1] p(revapp#) = [0] p(reverse#) = [0] p(c_1) = [0] p(c_2) = [5] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [1] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] x1 + [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [0] Following rules are strictly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [5] > [1] = possible#(x,ns,colorednodes) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [5] >= [5] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Nil(),node,colorednodes) = [5] >= [5] = c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [5] >= [5] = colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [5] >= [5] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [5] >= [5] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [5] >= [5] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [5] >= [5] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [5] >= [5] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [1] >= [1] = c_46(possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [1] >= [1] = c_67(possible#(color,xs,colorednodes)) and(False(),False()) = [0] >= [0] = False() and(False(),True()) = [0] >= [0] = False() and(True(),False()) = [0] >= [0] = False() and(True(),True()) = [0] >= [0] = True() eqColorList(Cons(c1,cs1),Nil()) = [0] >= [0] = False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) = [0] >= [0] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [0] >= [0] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [0] >= [0] = and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) = [0] >= [0] = False() eqColorList(Nil(),Nil()) = [0] >= [0] = True() **** Step 6.b:1.b:1.a:6: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colornode#(Nil(),node,colorednodes) -> c_2() possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_46) = {1}, uargs(c_67) = {1} Following symbols are considered usable: {and,eqColorList,!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]# ,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList# ,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [1] x2 + [0] p(Cons) = [1] x2 + [0] p(False) = [1] p(N) = [1] x1 + [1] x2 + [0] p(Nil) = [0] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [1] x1 + [0] p(True) = [1] p(Yellow) = [0] p(and) = [1] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [0] p(colorrest) = [0] p(colorrest[Ite][True][Let]) = [0] p(colorrest[Ite][True][Let][Ite]) = [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [0] p(eqColor) = [0] p(eqColorList) = [7] p(getAdjs) = [0] p(getColorListFromCN) = [0] p(getNodeFromCN) = [0] p(getNodeName) = [0] p(graphcolour) = [0] p(isPossible) = [0] p(notEmpty) = [0] p(possible) = [0] p(possible[Ite][True][Ite]) = [1] x1 + [0] p(revapp) = [0] p(reverse) = [0] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [4] p(colornode[Ite][True][Ite]#) = [4] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [4] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [4] p(colorrestthetrick[Ite]#) = [4] p(eqColor#) = [0] p(eqColorList#) = [0] p(getAdjs#) = [0] p(getColorListFromCN#) = [0] p(getNodeFromCN#) = [0] p(getNodeName#) = [0] p(graphcolour#) = [4] p(isPossible#) = [0] p(notEmpty#) = [0] p(possible#) = [4] p(possible[Ite][True][Ite]#) = [4] p(revapp#) = [0] p(reverse#) = [0] p(c_1) = [0] p(c_2) = [0] p(c_3) = [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [0] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [0] p(c_14) = [0] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [0] p(c_20) = [0] p(c_21) = [0] p(c_22) = [0] p(c_23) = [0] p(c_24) = [0] p(c_25) = [0] p(c_26) = [0] p(c_27) = [0] p(c_28) = [0] p(c_29) = [0] p(c_30) = [0] p(c_31) = [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [0] p(c_35) = [0] p(c_36) = [0] p(c_37) = [0] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [0] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] x1 + [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [0] p(c_50) = [0] p(c_51) = [0] p(c_52) = [0] p(c_53) = [0] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [0] p(c_58) = [0] p(c_59) = [0] p(c_60) = [0] p(c_61) = [0] p(c_62) = [0] p(c_63) = [0] p(c_64) = [0] p(c_65) = [0] p(c_66) = [0] p(c_67) = [1] x1 + [0] p(c_68) = [0] Following rules are strictly oriented: colornode#(Nil(),node,colorednodes) = [4] > [0] = c_2() Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [4] >= [4] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [4] >= [4] = possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [4] >= [4] = colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [4] >= [4] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] >= [4] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [4] >= [4] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [4] >= [4] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [4] >= [4] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [4] >= [4] = c_46(possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [4] >= [4] = c_67(possible#(color,xs,colorednodes)) and(False(),False()) = [1] >= [1] = False() and(False(),True()) = [1] >= [1] = False() and(True(),False()) = [1] >= [1] = False() and(True(),True()) = [1] >= [1] = True() eqColorList(Cons(c1,cs1),Nil()) = [7] >= [1] = False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [7] >= [1] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) = [7] >= [1] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [7] >= [1] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [7] >= [1] = and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) = [7] >= [1] = False() eqColorList(Nil(),Nil()) = [7] >= [1] = True() **** Step 6.b:1.b:1.a:7: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_46) = {1}, uargs(c_67) = {1} Following symbols are considered usable: {eqColor,!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [3] x1 + [1] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [0] p(Cons) = [1] x1 + [1] x2 + [4] p(False) = [0] p(N) = [1] x2 + [3] p(Nil) = [2] p(NoColor) = [4] p(NotPossible) = [0] p(Red) = [2] p(S) = [1] x1 + [1] p(True) = [1] p(Yellow) = [4] p(and) = [4] x1 + [1] p(colornode) = [0] p(colornode[Ite][True][Ite]) = [3] x1 + [0] p(colorof) = [0] p(colorof[Ite][True][Ite]) = [5] x1 + [5] x2 + [4] p(colorrest) = [0] p(colorrest[Ite][True][Let]) = [0] p(colorrest[Ite][True][Let][Ite]) = [1] x1 + [1] x2 + [1] x3 + [1] x4 + [0] p(colorrestthetrick) = [0] p(colorrestthetrick[Ite]) = [1] x4 + [0] p(eqColor) = [1] p(eqColorList) = [1] x1 + [6] p(getAdjs) = [1] x1 + [0] p(getColorListFromCN) = [1] x1 + [1] p(getNodeFromCN) = [1] p(getNodeName) = [0] p(graphcolour) = [2] p(isPossible) = [1] x1 + [0] p(notEmpty) = [2] x1 + [1] p(possible) = [2] x2 + [1] p(possible[Ite][True][Ite]) = [6] x1 + [4] x4 + [0] p(revapp) = [4] p(reverse) = [0] p(!EQ#) = [2] x2 + [1] p(and#) = [1] x1 + [4] x2 + [2] p(colornode#) = [2] x1 + [2] x2 + [0] p(colornode[Ite][True][Ite]#) = [2] x2 + [2] x3 + [0] p(colorof#) = [1] x1 + [4] x2 + [0] p(colorof[Ite][True][Ite]#) = [4] p(colorrest#) = [2] x2 + [2] x4 + [0] p(colorrest[Ite][True][Let]#) = [0] p(colorrestthetrick#) = [2] x1 + [1] x4 + [4] x5 + [1] p(colorrestthetrick[Ite]#) = [2] x2 + [1] x5 + [4] x6 + [1] p(eqColor#) = [1] x1 + [1] p(eqColorList#) = [1] x2 + [2] p(getAdjs#) = [1] p(getColorListFromCN#) = [2] p(getNodeFromCN#) = [1] x1 + [1] p(getNodeName#) = [2] x1 + [1] p(graphcolour#) = [2] x1 + [4] x2 + [1] p(isPossible#) = [1] x1 + [0] p(notEmpty#) = [1] x1 + [0] p(possible#) = [2] x1 + [2] x2 + [6] p(possible[Ite][True][Ite]#) = [6] x1 + [2] x2 + [2] x3 + [0] p(revapp#) = [4] x1 + [1] x2 + [4] p(reverse#) = [2] x1 + [2] p(c_1) = [2] p(c_2) = [4] p(c_3) = [1] x1 + [0] p(c_4) = [1] p(c_5) = [1] x1 + [0] p(c_6) = [1] p(c_7) = [4] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [2] p(c_12) = [0] p(c_13) = [1] p(c_14) = [0] p(c_15) = [1] p(c_16) = [1] p(c_17) = [0] p(c_18) = [0] p(c_19) = [4] p(c_20) = [1] p(c_21) = [4] p(c_22) = [4] p(c_23) = [1] x1 + [1] p(c_24) = [1] p(c_25) = [4] x1 + [1] p(c_26) = [1] p(c_27) = [1] x1 + [1] p(c_28) = [1] x1 + [1] p(c_29) = [1] x1 + [0] p(c_30) = [4] p(c_31) = [0] p(c_32) = [2] p(c_33) = [1] x1 + [4] p(c_34) = [1] p(c_35) = [4] p(c_36) = [0] p(c_37) = [1] p(c_38) = [0] p(c_39) = [0] p(c_40) = [1] p(c_41) = [4] x2 + [2] x3 + [1] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [4] p(c_46) = [1] x1 + [0] p(c_47) = [1] p(c_48) = [4] p(c_49) = [0] p(c_50) = [1] p(c_51) = [0] p(c_52) = [0] p(c_53) = [2] p(c_54) = [1] x1 + [1] p(c_55) = [0] p(c_56) = [0] p(c_57) = [1] p(c_58) = [1] p(c_59) = [1] x1 + [1] p(c_60) = [0] p(c_61) = [2] p(c_62) = [0] p(c_63) = [1] p(c_64) = [0] p(c_65) = [2] x1 + [1] p(c_66) = [1] x1 + [4] p(c_67) = [1] x1 + [0] p(c_68) = [4] Following rules are strictly oriented: possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [2] color + [2] x + [2] xs + [8] > [2] color + [2] xs + [6] = c_67(possible#(color,xs,colorednodes)) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] ns + [2] x + [2] xs + [14] >= [2] ns + [2] x + [2] xs + [14] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] ns + [2] x + [2] xs + [14] >= [2] ns + [2] x + [6] = possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) = [2] node + [4] >= [4] = c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [2] node + [2] x + [2] xs + [8] >= [2] node + [2] xs + [0] = colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [2] ncs + [2] x + [2] xs + [8] >= [2] ncs + [2] x + [0] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [1] colorednodes + [2] cs1 + [4] rest + [1] >= [1] colorednodes + [2] cs1 + [4] rest + [1] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [1] colorednodes + [4] rest + [2] x + [2] xs + [9] >= [1] colorednodes + [4] rest + [2] xs + [1] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [1] colorednodes + [2] cs1 + [4] rest + [1] >= [2] cs1 + [2] rest + [0] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [4] cs + [2] x + [2] xs + [9] >= [2] cs + [2] xs + [0] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [2] color + [2] x + [2] xs + [14] >= [2] color + [2] x + [2] xs + [14] = c_46(possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes)) eqColor(Blue(),Blue()) = [1] >= [1] = True() eqColor(Blue(),NoColor()) = [1] >= [0] = False() eqColor(Blue(),Red()) = [1] >= [0] = False() eqColor(Blue(),Yellow()) = [1] >= [0] = False() eqColor(NoColor(),b) = [1] >= [0] = False() eqColor(Red(),Blue()) = [1] >= [0] = False() eqColor(Red(),NoColor()) = [1] >= [0] = False() eqColor(Red(),Red()) = [1] >= [1] = True() eqColor(Red(),Yellow()) = [1] >= [0] = False() eqColor(Yellow(),Blue()) = [1] >= [0] = False() eqColor(Yellow(),NoColor()) = [1] >= [0] = False() eqColor(Yellow(),Red()) = [1] >= [0] = False() eqColor(Yellow(),Yellow()) = [1] >= [1] = True() **** Step 6.b:1.b:1.a:8: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_46) = {1}, uargs(c_67) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [1] x1 + [2] x2 + [1] p(0) = [1] p(Blue) = [2] p(CN) = [1] x1 + [0] p(Cons) = [1] x1 + [1] x2 + [4] p(False) = [0] p(N) = [1] x2 + [3] p(Nil) = [2] p(NoColor) = [2] p(NotPossible) = [1] p(Red) = [0] p(S) = [2] p(True) = [0] p(Yellow) = [2] p(and) = [0] p(colornode) = [4] x3 + [0] p(colornode[Ite][True][Ite]) = [4] x1 + [2] x2 + [1] x4 + [2] p(colorof) = [6] x1 + [4] p(colorof[Ite][True][Ite]) = [1] x1 + [1] x3 + [4] p(colorrest) = [2] x1 + [2] x2 + [4] p(colorrest[Ite][True][Let]) = [1] x5 + [1] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [0] p(colorrestthetrick) = [1] x1 + [1] x3 + [0] p(colorrestthetrick[Ite]) = [1] x1 + [1] x2 + [2] x3 + [1] p(eqColor) = [1] x2 + [0] p(eqColorList) = [2] x1 + [0] p(getAdjs) = [0] p(getColorListFromCN) = [1] p(getNodeFromCN) = [2] p(getNodeName) = [1] x1 + [0] p(graphcolour) = [1] p(isPossible) = [1] x1 + [0] p(notEmpty) = [4] x1 + [1] p(possible) = [1] x2 + [0] p(possible[Ite][True][Ite]) = [1] x1 + [5] x2 + [5] x4 + [1] p(revapp) = [0] p(reverse) = [1] x1 + [1] p(!EQ#) = [4] p(and#) = [1] x2 + [0] p(colornode#) = [1] x1 + [2] x2 + [0] p(colornode[Ite][True][Ite]#) = [1] x2 + [2] x3 + [0] p(colorof#) = [1] x1 + [0] p(colorof[Ite][True][Ite]#) = [4] x3 + [0] p(colorrest#) = [3] x2 + [2] x4 + [3] p(colorrest[Ite][True][Let]#) = [4] x2 + [1] x3 + [4] x5 + [0] p(colorrestthetrick#) = [3] x1 + [2] x5 + [4] p(colorrestthetrick[Ite]#) = [3] x2 + [2] x6 + [3] p(eqColor#) = [2] x1 + [1] p(eqColorList#) = [1] p(getAdjs#) = [1] x1 + [2] p(getColorListFromCN#) = [1] x1 + [0] p(getNodeFromCN#) = [1] x1 + [0] p(getNodeName#) = [2] x1 + [0] p(graphcolour#) = [3] x1 + [3] x2 + [0] p(isPossible#) = [1] x1 + [0] p(notEmpty#) = [1] p(possible#) = [1] x1 + [2] x2 + [1] p(possible[Ite][True][Ite]#) = [1] x2 + [2] x3 + [0] p(revapp#) = [4] x1 + [4] p(reverse#) = [4] x1 + [1] p(c_1) = [1] x1 + [0] p(c_2) = [1] p(c_3) = [2] x1 + [2] p(c_4) = [0] p(c_5) = [1] p(c_6) = [1] p(c_7) = [2] x1 + [0] p(c_8) = [0] p(c_9) = [1] p(c_10) = [1] p(c_11) = [2] p(c_12) = [0] p(c_13) = [4] p(c_14) = [1] p(c_15) = [1] p(c_16) = [0] p(c_17) = [1] p(c_18) = [0] p(c_19) = [0] p(c_20) = [1] p(c_21) = [1] p(c_22) = [1] x1 + [1] p(c_23) = [0] p(c_24) = [0] p(c_25) = [2] x1 + [2] p(c_26) = [1] p(c_27) = [1] x1 + [0] p(c_28) = [1] p(c_29) = [4] x1 + [0] p(c_30) = [1] x1 + [0] p(c_31) = [1] p(c_32) = [4] x1 + [0] p(c_33) = [1] p(c_34) = [1] p(c_35) = [1] p(c_36) = [1] p(c_37) = [2] p(c_38) = [1] p(c_39) = [0] p(c_40) = [1] p(c_41) = [1] x1 + [0] p(c_42) = [4] p(c_43) = [0] p(c_44) = [0] p(c_45) = [0] p(c_46) = [1] x1 + [0] p(c_47) = [0] p(c_48) = [0] p(c_49) = [1] p(c_50) = [1] p(c_51) = [0] p(c_52) = [0] p(c_53) = [1] p(c_54) = [4] x1 + [0] p(c_55) = [0] p(c_56) = [1] p(c_57) = [0] p(c_58) = [0] p(c_59) = [1] x1 + [4] p(c_60) = [0] p(c_61) = [1] p(c_62) = [2] p(c_63) = [0] p(c_64) = [0] p(c_65) = [1] p(c_66) = [2] x1 + [0] p(c_67) = [1] x1 + [2] p(c_68) = [1] Following rules are strictly oriented: possible#(color,Cons(x,xs),colorednodes) = [1] color + [2] x + [2] xs + [9] > [1] color + [2] x + [2] xs + [8] = c_46(possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes)) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] ns + [1] x + [1] xs + [10] >= [2] ns + [1] x + [1] xs + [10] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [2] ns + [1] x + [1] xs + [10] >= [2] ns + [1] x + [1] = possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) = [2] node + [2] >= [1] = c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [2] node + [1] x + [1] xs + [4] >= [2] node + [1] xs + [0] = colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [3] ncs + [2] x + [2] xs + [11] >= [1] ncs + [2] x + [0] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [3] cs1 + [2] rest + [4] >= [3] cs1 + [2] rest + [3] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [2] rest + [3] x + [3] xs + [15] >= [2] rest + [3] xs + [4] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [3] cs1 + [2] rest + [3] >= [3] cs1 + [2] rest + [3] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [3] cs + [3] x + [3] xs + [12] >= [3] cs + [2] xs + [3] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [1] color + [2] x + [2] xs + [8] >= [1] color + [2] xs + [3] = c_67(possible#(color,xs,colorednodes)) **** Step 6.b:1.b:1.a:9: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode#(Nil(),node,colorednodes) -> c_2() colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> c_46(possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes)) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> c_67(possible#(color,xs,colorednodes)) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/1,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). **** Step 6.b:1.b:1.b:1: RemoveWeakSuffixes WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) reverse#(xs) -> revapp#(xs,Nil()) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) -->_1 colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)):7 2:S:colorof#(node,Nil()) -> c_4() 3:S:possible#(color,Nil(),colorednodes) -> c_47() 4:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs ,node ,colorednodes):6 5:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes):30 -->_1 possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes):29 -->_1 possible#(color,Nil(),colorednodes) -> c_47():3 6:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 7:W:colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) -->_1 colorof#(node,Nil()) -> c_4():2 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs))):1 8:W:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 9:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs ,cs1 ,colorednodes ,rest):12 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):11 10:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 11:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs):10 -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):9 12:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):8 13:W:eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 14:W:eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 15:W:eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 16:W:eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 17:W:eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 18:W:eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 19:W:eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 20:W:eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 21:W:eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 22:W:eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 23:W:eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 24:W:eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 25:W:eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):25 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):24 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):23 -->_1 eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):22 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):21 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):20 -->_1 eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):19 -->_1 eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):18 -->_1 eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2):17 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2):16 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2):15 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2):14 -->_1 eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2):13 26:W:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 27:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):8 28:W:graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) -->_1 reverse#(xs) -> revapp#(xs,Nil()):33 29:W:possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) -->_1 colorof#(node,Nil()) -> c_4():2 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs))):1 30:W:possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color ,xs ,colorednodes):31 31:W:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x ,colorednodes)) ,color ,Cons(x,xs) ,colorednodes):30 -->_1 possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes):29 -->_1 possible#(color,Nil(),colorednodes) -> c_47():3 32:W:revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):32 33:W:reverse#(xs) -> revapp#(xs,Nil()) -->_1 revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)):32 The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 28: graphcolour#(Cons(x,xs),cs) -> reverse#(colorrest(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs)) 33: reverse#(xs) -> revapp#(xs,Nil()) 32: revapp#(Cons(x,xs),rest) -> revapp#(xs,Cons(x,rest)) 10: colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> eqColorList#(cs1,ncs) 25: eqColorList#(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 24: eqColorList#(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 23: eqColorList#(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 22: eqColorList#(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) 21: eqColorList#(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 20: eqColorList#(Cons(Red(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 19: eqColorList#(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 18: eqColorList#(Cons(Red(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) 17: eqColorList#(Cons(NoColor(),cs1),Cons(b,cs2)) -> eqColorList#(cs1,cs2) 16: eqColorList#(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> eqColorList#(cs1,cs2) 15: eqColorList#(Cons(Blue(),cs1),Cons(Red(),cs2)) -> eqColorList#(cs1,cs2) 14: eqColorList#(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> eqColorList#(cs1,cs2) 13: eqColorList#(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> eqColorList#(cs1,cs2) **** Step 6.b:1.b:1.b:2: RemoveHeads WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: RemoveHeads + Details: Consider the dependency graph 1:S:colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) -->_1 colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)):7 2:S:colorof#(node,Nil()) -> c_4() 3:S:possible#(color,Nil(),colorednodes) -> c_47() 4:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) -->_1 colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs ,node ,colorednodes):6 5:W:colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes):30 -->_1 possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes):29 -->_1 possible#(color,Nil(),colorednodes) -> c_47():3 6:W:colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 7:W:colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) -->_1 colorof#(node,Nil()) -> c_4():2 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs))):1 8:W:colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 9:W:colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs ,cs1 ,colorednodes ,rest):12 -->_1 colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest):11 11:W:colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) -->_1 colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest):9 12:W:colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):8 26:W:graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()) -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes):5 -->_1 colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes):4 27:W:graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) -->_1 colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes):8 29:W:possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) -->_1 colorof#(node,Nil()) -> c_4():2 -->_1 colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)) ,xs))):1 30:W:possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) -->_1 possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color ,xs ,colorednodes):31 31:W:possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) -->_1 possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color ,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes):30 -->_1 possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes):29 -->_1 possible#(color,Nil(),colorednodes) -> c_47():3 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). [(26,graphcolour#(Cons(x,xs),cs) -> colornode#(cs,x,Nil()))] **** Step 6.b:1.b:1.b:3: UsableRules WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x colorrest(cs,ncs,colorednodes,Cons(x,xs)) -> colorrest[Ite][True][Let](cs ,ncs ,colorednodes ,Cons(x,xs) ,colornode(ncs,x,colorednodes)) colorrest(cs,ncs,colorednodes,Nil()) -> colorednodes colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,CN(cl,n)) -> colorrest[Ite][True][Let][Ite](True() ,cs ,ncs ,colorednodes ,rest ,CN(cl,n)) colorrest[Ite][True][Let](cs,ncs,colorednodes,rest,NotPossible()) -> colorrest[Ite][True][Let][Ite](False() ,cs ,ncs ,colorednodes ,rest ,NotPossible()) eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) **** Step 6.b:1.b:1.b:4: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() possible#(color,Nil(),colorednodes) -> c_47() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_3) = {1}, uargs(c_61) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [1] p(Blue) = [0] p(CN) = [1] x1 + [1] p(Cons) = [0] p(False) = [0] p(N) = [1] x1 + [0] p(Nil) = [3] p(NoColor) = [0] p(NotPossible) = [0] p(Red) = [0] p(S) = [4] p(True) = [4] p(Yellow) = [0] p(and) = [1] x2 + [2] p(colornode) = [5] p(colornode[Ite][True][Ite]) = [2] x1 + [1] x3 + [7] x4 + [5] p(colorof) = [4] x2 + [0] p(colorof[Ite][True][Ite]) = [3] x1 + [2] x2 + [3] p(colorrest) = [1] p(colorrest[Ite][True][Let]) = [1] x1 + [1] x3 + [1] x5 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x6 + [1] p(colorrestthetrick) = [1] x3 + [1] x5 + [1] p(colorrestthetrick[Ite]) = [1] x2 + [1] x5 + [0] p(eqColor) = [0] p(eqColorList) = [4] p(getAdjs) = [0] p(getColorListFromCN) = [1] x1 + [1] p(getNodeFromCN) = [1] x1 + [1] p(getNodeName) = [1] x1 + [2] p(graphcolour) = [1] x1 + [0] p(isPossible) = [2] p(notEmpty) = [1] x1 + [1] p(possible) = [4] x1 + [2] x3 + [0] p(possible[Ite][True][Ite]) = [4] x4 + [2] p(revapp) = [2] p(reverse) = [1] p(!EQ#) = [1] x1 + [1] x2 + [4] p(and#) = [1] x2 + [1] p(colornode#) = [3] p(colornode[Ite][True][Ite]#) = [3] p(colorof#) = [0] p(colorof[Ite][True][Ite]#) = [0] p(colorrest#) = [3] p(colorrest[Ite][True][Let]#) = [1] x1 + [4] x3 + [1] x4 + [1] x5 + [2] p(colorrestthetrick#) = [2] x5 + [7] p(colorrestthetrick[Ite]#) = [2] x6 + [7] p(eqColor#) = [4] x1 + [4] x2 + [4] p(eqColorList#) = [1] p(getAdjs#) = [1] p(getColorListFromCN#) = [2] x1 + [0] p(getNodeFromCN#) = [2] x1 + [0] p(getNodeName#) = [1] x1 + [2] p(graphcolour#) = [4] x2 + [3] p(isPossible#) = [1] x1 + [4] p(notEmpty#) = [4] x1 + [0] p(possible#) = [3] p(possible[Ite][True][Ite]#) = [3] p(revapp#) = [2] p(reverse#) = [1] x1 + [1] p(c_1) = [4] x1 + [4] x2 + [4] p(c_2) = [4] p(c_3) = [2] x1 + [0] p(c_4) = [0] p(c_5) = [4] x1 + [1] p(c_6) = [2] p(c_7) = [1] x1 + [0] p(c_8) = [0] p(c_9) = [1] p(c_10) = [0] p(c_11) = [4] p(c_12) = [1] p(c_13) = [1] p(c_14) = [1] p(c_15) = [4] p(c_16) = [1] p(c_17) = [1] p(c_18) = [2] p(c_19) = [1] p(c_20) = [0] p(c_21) = [0] p(c_22) = [2] x1 + [0] p(c_23) = [1] x1 + [0] p(c_24) = [1] p(c_25) = [1] x1 + [0] p(c_26) = [1] x1 + [0] p(c_27) = [0] p(c_28) = [1] x1 + [2] p(c_29) = [4] x1 + [1] p(c_30) = [0] p(c_31) = [2] x1 + [0] p(c_32) = [0] p(c_33) = [0] p(c_34) = [1] p(c_35) = [2] p(c_36) = [2] p(c_37) = [0] p(c_38) = [0] p(c_39) = [1] p(c_40) = [1] p(c_41) = [1] x1 + [2] x2 + [1] x3 + [0] p(c_42) = [0] p(c_43) = [4] p(c_44) = [0] p(c_45) = [1] p(c_46) = [1] x1 + [1] x2 + [1] p(c_47) = [1] p(c_48) = [0] p(c_49) = [4] p(c_50) = [1] p(c_51) = [2] p(c_52) = [0] p(c_53) = [1] p(c_54) = [2] x1 + [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [1] p(c_58) = [1] p(c_59) = [4] x1 + [1] p(c_60) = [0] p(c_61) = [2] x1 + [0] p(c_62) = [1] p(c_63) = [1] p(c_64) = [4] p(c_65) = [1] p(c_66) = [1] x1 + [4] p(c_67) = [1] x1 + [0] p(c_68) = [0] Following rules are strictly oriented: possible#(color,Nil(),colorednodes) = [3] > [1] = c_47() Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [3] >= [3] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [3] >= [3] = possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [3] >= [3] = colornode#(xs,node,colorednodes) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) = [0] >= [0] = c_3(colorof[Ite][True][Ite]#(!EQ(name,node),node,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) = [0] >= [0] = c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) = [0] >= [0] = c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [3] >= [3] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [2] rest + [7] >= [2] rest + [7] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [2] rest + [7] >= [2] rest + [7] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [2] rest + [7] >= [3] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [4] cs + [3] >= [3] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [3] >= [0] = colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) = [3] >= [3] = possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes) possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [3] >= [3] = possible#(color,xs,colorednodes) **** Step 6.b:1.b:1.b:5: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_3) = {1}, uargs(c_61) = {1} Following symbols are considered usable: {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]#,colorrest# ,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList#,getAdjs# ,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [0] p(Blue) = [0] p(CN) = [1] x1 + [7] p(Cons) = [0] p(False) = [0] p(N) = [1] x2 + [1] p(Nil) = [0] p(NoColor) = [1] p(NotPossible) = [1] p(Red) = [2] p(S) = [0] p(True) = [0] p(Yellow) = [0] p(and) = [0] p(colornode) = [4] x2 + [4] p(colornode[Ite][True][Ite]) = [4] x1 + [0] p(colorof) = [1] x2 + [1] p(colorof[Ite][True][Ite]) = [1] x1 + [1] x2 + [1] x3 + [2] p(colorrest) = [1] x4 + [4] p(colorrest[Ite][True][Let]) = [1] x4 + [2] x5 + [2] p(colorrest[Ite][True][Let][Ite]) = [1] x5 + [1] p(colorrestthetrick) = [1] x1 + [1] x3 + [1] x5 + [2] p(colorrestthetrick[Ite]) = [4] x2 + [1] x4 + [1] p(eqColor) = [2] p(eqColorList) = [4] p(getAdjs) = [1] x1 + [1] p(getColorListFromCN) = [1] p(getNodeFromCN) = [4] p(getNodeName) = [1] x1 + [1] p(graphcolour) = [4] x1 + [4] p(isPossible) = [0] p(notEmpty) = [1] x1 + [1] p(possible) = [2] x1 + [2] x2 + [2] p(possible[Ite][True][Ite]) = [5] p(revapp) = [0] p(reverse) = [1] x1 + [0] p(!EQ#) = [4] x2 + [0] p(and#) = [1] x1 + [1] x2 + [0] p(colornode#) = [4] x3 + [1] p(colornode[Ite][True][Ite]#) = [4] x4 + [1] p(colorof#) = [1] p(colorof[Ite][True][Ite]#) = [1] p(colorrest#) = [4] x3 + [1] p(colorrest[Ite][True][Let]#) = [1] x2 + [1] x4 + [2] x5 + [0] p(colorrestthetrick#) = [4] x3 + [4] x4 + [1] p(colorrestthetrick[Ite]#) = [4] x4 + [4] x5 + [1] p(eqColor#) = [1] x1 + [1] p(eqColorList#) = [4] p(getAdjs#) = [1] x1 + [1] p(getColorListFromCN#) = [1] p(getNodeFromCN#) = [4] p(getNodeName#) = [0] p(graphcolour#) = [1] p(isPossible#) = [4] p(notEmpty#) = [0] p(possible#) = [4] x3 + [1] p(possible[Ite][True][Ite]#) = [4] x4 + [1] p(revapp#) = [1] x2 + [1] p(reverse#) = [0] p(c_1) = [4] x1 + [4] x2 + [4] p(c_2) = [1] p(c_3) = [1] x1 + [0] p(c_4) = [0] p(c_5) = [1] p(c_6) = [0] p(c_7) = [1] x2 + [1] p(c_8) = [2] p(c_9) = [0] p(c_10) = [1] p(c_11) = [0] p(c_12) = [0] p(c_13) = [1] p(c_14) = [1] p(c_15) = [0] p(c_16) = [0] p(c_17) = [0] p(c_18) = [0] p(c_19) = [1] p(c_20) = [4] p(c_21) = [4] p(c_22) = [1] p(c_23) = [4] x1 + [1] p(c_24) = [1] x1 + [4] p(c_25) = [1] p(c_26) = [0] p(c_27) = [1] x1 + [0] p(c_28) = [1] x1 + [0] p(c_29) = [1] x1 + [1] p(c_30) = [4] x1 + [0] p(c_31) = [4] p(c_32) = [2] x1 + [0] p(c_33) = [2] x1 + [0] p(c_34) = [0] p(c_35) = [1] p(c_36) = [4] p(c_37) = [1] p(c_38) = [0] p(c_39) = [4] p(c_40) = [4] p(c_41) = [1] x3 + [1] p(c_42) = [1] p(c_43) = [1] p(c_44) = [0] p(c_45) = [0] p(c_46) = [4] x2 + [1] p(c_47) = [1] p(c_48) = [1] x1 + [1] p(c_49) = [0] p(c_50) = [2] x1 + [2] p(c_51) = [2] p(c_52) = [0] p(c_53) = [1] p(c_54) = [0] p(c_55) = [0] p(c_56) = [0] p(c_57) = [4] p(c_58) = [0] p(c_59) = [4] x1 + [2] p(c_60) = [1] p(c_61) = [1] x1 + [0] p(c_62) = [0] p(c_63) = [1] p(c_64) = [4] p(c_65) = [0] p(c_66) = [1] x1 + [4] p(c_67) = [1] p(c_68) = [0] Following rules are strictly oriented: colorof#(node,Nil()) = [1] > [0] = c_4() Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [4] colorednodes + [1] >= [4] colorednodes + [1] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [4] colorednodes + [1] >= [4] colorednodes + [1] = possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [4] colorednodes + [1] >= [4] colorednodes + [1] = colornode#(xs,node,colorednodes) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) = [1] >= [1] = c_3(colorof[Ite][True][Ite]#(!EQ(name,node),node,Cons(CN(cl,N(name,adjs)),xs))) colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) = [1] >= [1] = c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [4] colorednodes + [1] >= [4] colorednodes + [1] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [4] colorednodes + [4] ncs + [1] >= [4] colorednodes + [4] ncs + [1] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [4] colorednodes + [4] ncs + [1] >= [4] colorednodes + [4] ncs + [1] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [4] colorednodes + [4] ncs + [1] >= [4] colorednodes + [1] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [1] >= [1] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [4] colorednodes + [1] >= [1] = colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) = [4] colorednodes + [1] >= [4] colorednodes + [1] = possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes) possible#(color,Nil(),colorednodes) = [4] colorednodes + [1] >= [1] = c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [4] colorednodes + [1] >= [4] colorednodes + [1] = possible#(color,xs,colorednodes) **** Step 6.b:1.b:1.b:6: NaturalMI WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: NaturalMI {miDimension = 1, miDegree = 1, miKind = Algebraic, uargs = UArgs, urules = URules, selector = Just any strict-rules} + Details: We apply a matrix interpretation of kind constructor based matrix interpretation: The following argument positions are considered usable: uargs(c_3) = {1}, uargs(c_61) = {1} Following symbols are considered usable: {and,eqColorList,!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof#,colorof[Ite][True][Ite]# ,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]#,eqColor#,eqColorList# ,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible#,notEmpty#,possible# ,possible[Ite][True][Ite]#,revapp#,reverse#} TcT has computed the following interpretation: p(!EQ) = [0] p(0) = [0] p(Blue) = [2] p(CN) = [1] x1 + [0] p(Cons) = [1] x2 + [2] p(False) = [0] p(N) = [2] p(Nil) = [0] p(NoColor) = [1] p(NotPossible) = [0] p(Red) = [0] p(S) = [0] p(True) = [0] p(Yellow) = [1] p(and) = [4] p(colornode) = [6] p(colornode[Ite][True][Ite]) = [4] x1 + [3] x2 + [2] x4 + [2] p(colorof) = [1] p(colorof[Ite][True][Ite]) = [2] x2 + [3] p(colorrest) = [2] x2 + [1] x3 + [1] p(colorrest[Ite][True][Let]) = [1] x1 + [1] x2 + [4] x4 + [1] x5 + [0] p(colorrest[Ite][True][Let][Ite]) = [1] x2 + [0] p(colorrestthetrick) = [1] x1 + [1] x2 + [1] x3 + [4] x5 + [4] p(colorrestthetrick[Ite]) = [1] x2 + [1] p(eqColor) = [2] x1 + [1] p(eqColorList) = [4] p(getAdjs) = [4] x1 + [0] p(getColorListFromCN) = [2] p(getNodeFromCN) = [1] x1 + [2] p(getNodeName) = [1] p(graphcolour) = [1] x2 + [0] p(isPossible) = [4] x1 + [0] p(notEmpty) = [0] p(possible) = [2] x2 + [0] p(possible[Ite][True][Ite]) = [3] x1 + [1] x2 + [1] x3 + [2] p(revapp) = [4] x1 + [1] x2 + [1] p(reverse) = [1] x1 + [2] p(!EQ#) = [0] p(and#) = [0] p(colornode#) = [2] x1 + [1] x3 + [4] p(colornode[Ite][True][Ite]#) = [2] x2 + [2] x3 + [1] x4 + [0] p(colorof#) = [1] x2 + [4] p(colorof[Ite][True][Ite]#) = [1] x3 + [2] p(colorrest#) = [2] x1 + [2] x2 + [1] x3 + [3] x4 + [7] p(colorrest[Ite][True][Let]#) = [4] x2 + [1] x3 + [1] x5 + [2] p(colorrestthetrick#) = [4] x1 + [2] x2 + [1] x4 + [4] x5 + [7] p(colorrestthetrick[Ite]#) = [4] x2 + [2] x3 + [1] x5 + [4] x6 + [7] p(eqColor#) = [0] p(eqColorList#) = [1] x2 + [0] p(getAdjs#) = [2] x1 + [4] p(getColorListFromCN#) = [1] p(getNodeFromCN#) = [4] x1 + [0] p(getNodeName#) = [4] x1 + [0] p(graphcolour#) = [4] x1 + [4] x2 + [1] p(isPossible#) = [1] p(notEmpty#) = [1] p(possible#) = [1] x3 + [7] p(possible[Ite][True][Ite]#) = [1] x4 + [7] p(revapp#) = [1] x2 + [0] p(reverse#) = [0] p(c_1) = [1] x1 + [4] x2 + [1] p(c_2) = [4] p(c_3) = [1] x1 + [0] p(c_4) = [0] p(c_5) = [0] p(c_6) = [0] p(c_7) = [1] x2 + [1] p(c_8) = [0] p(c_9) = [0] p(c_10) = [0] p(c_11) = [0] p(c_12) = [0] p(c_13) = [1] p(c_14) = [1] p(c_15) = [0] p(c_16) = [1] p(c_17) = [0] p(c_18) = [2] p(c_19) = [1] p(c_20) = [0] p(c_21) = [0] p(c_22) = [2] x1 + [2] p(c_23) = [0] p(c_24) = [1] x1 + [4] p(c_25) = [1] x1 + [2] p(c_26) = [1] p(c_27) = [1] p(c_28) = [1] p(c_29) = [1] x1 + [0] p(c_30) = [4] x1 + [2] p(c_31) = [1] p(c_32) = [1] x1 + [1] p(c_33) = [1] p(c_34) = [2] p(c_35) = [0] p(c_36) = [0] p(c_37) = [1] p(c_38) = [0] p(c_39) = [0] p(c_40) = [0] p(c_41) = [1] x2 + [4] p(c_42) = [0] p(c_43) = [0] p(c_44) = [0] p(c_45) = [2] p(c_46) = [2] x1 + [1] x2 + [0] p(c_47) = [1] p(c_48) = [1] p(c_49) = [1] p(c_50) = [4] x1 + [1] p(c_51) = [0] p(c_52) = [1] p(c_53) = [1] p(c_54) = [1] x1 + [0] p(c_55) = [1] p(c_56) = [1] p(c_57) = [0] p(c_58) = [1] p(c_59) = [1] x1 + [0] p(c_60) = [1] p(c_61) = [1] x1 + [0] p(c_62) = [0] p(c_63) = [1] p(c_64) = [1] p(c_65) = [0] p(c_66) = [2] p(c_67) = [4] x1 + [1] p(c_68) = [0] Following rules are strictly oriented: colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) = [1] xs + [6] > [1] xs + [4] = c_3(colorof[Ite][True][Ite]#(!EQ(name,node),node,Cons(CN(cl,N(name,adjs)),xs))) Following rules are (at-least) weakly oriented: colornode#(Cons(x,xs),N(n,ns),colorednodes) = [1] colorednodes + [2] xs + [8] >= [1] colorednodes + [2] xs + [8] = colornode[Ite][True][Ite]#(possible(x,ns,colorednodes),Cons(x,xs),N(n,ns),colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) = [1] colorednodes + [2] xs + [8] >= [1] colorednodes + [7] = possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) = [1] colorednodes + [2] node + [2] xs + [4] >= [1] colorednodes + [2] xs + [4] = colornode#(xs,node,colorednodes) colorof#(node,Nil()) = [4] >= [0] = c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) = [1] xs + [4] >= [1] xs + [4] = c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) = [1] colorednodes + [2] cs + [2] ncs + [3] xs + [13] >= [1] colorednodes + [2] ncs + [4] = colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) = [1] colorednodes + [2] cs + [4] cs1 + [4] rest + [7] >= [1] colorednodes + [2] cs + [4] cs1 + [4] rest + [7] = colorrestthetrick[Ite]#(eqColorList(cs1,ncs),cs1,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) = [1] colorednodes + [2] cs + [4] rest + [4] xs + [15] >= [1] colorednodes + [2] cs + [4] rest + [4] xs + [7] = colorrestthetrick#(xs,cs,ncs,colorednodes,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) = [1] colorednodes + [2] cs + [4] cs1 + [4] rest + [7] >= [1] colorednodes + [2] cs + [2] cs1 + [3] rest + [7] = colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) = [4] cs + [4] xs + [9] >= [4] cs + [3] xs + [9] = colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) = [1] colorednodes + [7] >= [1] colorednodes + [4] = colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) = [1] colorednodes + [7] >= [1] colorednodes + [7] = possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)),color,Cons(x,xs),colorednodes) possible#(color,Nil(),colorednodes) = [1] colorednodes + [7] >= [1] = c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) = [1] colorednodes + [7] >= [1] colorednodes + [7] = possible#(color,xs,colorednodes) and(False(),False()) = [4] >= [0] = False() and(False(),True()) = [4] >= [0] = False() and(True(),False()) = [4] >= [0] = False() and(True(),True()) = [4] >= [0] = True() eqColorList(Cons(c1,cs1),Nil()) = [4] >= [0] = False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) = [4] >= [4] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) = [4] >= [4] = and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) = [4] >= [4] = and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) = [4] >= [4] = and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) = [4] >= [0] = False() eqColorList(Nil(),Nil()) = [4] >= [0] = True() **** Step 6.b:1.b:1.b:7: EmptyProcessor WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: colornode#(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite]#(possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode#(Cons(x,xs),N(n,ns),colorednodes) -> possible#(x,ns,colorednodes) colornode[Ite][True][Ite]#(False(),Cons(x,xs),node,colorednodes) -> colornode#(xs,node,colorednodes) colorof#(node,Cons(CN(cl,N(name,adjs)),xs)) -> c_3(colorof[Ite][True][Ite]#(!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs))) colorof#(node,Nil()) -> c_4() colorof[Ite][True][Ite]#(False(),node,Cons(x,xs)) -> c_61(colorof#(node,xs)) colorrest#(cs,ncs,colorednodes,Cons(x,xs)) -> colornode#(ncs,x,colorednodes) colorrestthetrick#(cs1,cs,ncs,colorednodes,rest) -> colorrestthetrick[Ite]#(eqColorList(cs1,ncs) ,cs1 ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(False(),Cons(x,xs),cs,ncs,colorednodes,rest) -> colorrestthetrick#(xs ,cs ,ncs ,colorednodes ,rest) colorrestthetrick[Ite]#(True(),cs1,cs,ncs,colorednodes,rest) -> colorrest#(cs,cs1,colorednodes,rest) graphcolour#(Cons(x,xs),cs) -> colorrest#(cs,cs,Cons(colornode(cs,x,Nil()),Nil()),xs) possible#(color,Cons(x,xs),colorednodes) -> colorof#(x,colorednodes) possible#(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite]#(eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible#(color,Nil(),colorednodes) -> c_47() possible[Ite][True][Ite]#(False(),color,Cons(x,xs),colorednodes) -> possible#(color,xs,colorednodes) - Weak TRS: !EQ(0(),0()) -> True() !EQ(0(),S(y)) -> False() !EQ(S(x),0()) -> False() !EQ(S(x),S(y)) -> !EQ(x,y) and(False(),False()) -> False() and(False(),True()) -> False() and(True(),False()) -> False() and(True(),True()) -> True() colornode(Cons(x,xs),N(n,ns),colorednodes) -> colornode[Ite][True][Ite](possible(x,ns,colorednodes) ,Cons(x,xs) ,N(n,ns) ,colorednodes) colornode(Nil(),node,colorednodes) -> NotPossible() colornode[Ite][True][Ite](False(),Cons(x,xs),node,colorednodes) -> colornode(xs,node,colorednodes) colornode[Ite][True][Ite](True(),cs,node,colorednodes) -> CN(cs,node) colorof(node,Cons(CN(cl,N(name,adjs)),xs)) -> colorof[Ite][True][Ite](!EQ(name,node) ,node ,Cons(CN(cl,N(name,adjs)),xs)) colorof(node,Nil()) -> NoColor() colorof[Ite][True][Ite](False(),node,Cons(x,xs)) -> colorof(node,xs) colorof[Ite][True][Ite](True(),node,Cons(CN(Cons(x,xs),n),xs')) -> x eqColor(Blue(),Blue()) -> True() eqColor(Blue(),NoColor()) -> False() eqColor(Blue(),Red()) -> False() eqColor(Blue(),Yellow()) -> False() eqColor(NoColor(),b) -> False() eqColor(Red(),Blue()) -> False() eqColor(Red(),NoColor()) -> False() eqColor(Red(),Red()) -> True() eqColor(Red(),Yellow()) -> False() eqColor(Yellow(),Blue()) -> False() eqColor(Yellow(),NoColor()) -> False() eqColor(Yellow(),Red()) -> False() eqColor(Yellow(),Yellow()) -> True() eqColorList(Cons(c1,cs1),Nil()) -> False() eqColorList(Cons(Blue(),cs1),Cons(Blue(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Blue(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(NoColor(),cs1),Cons(b,cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Red(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Cons(Red(),cs1),Cons(Yellow(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Blue(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(NoColor(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Red(),cs2)) -> and(False(),eqColorList(cs1,cs2)) eqColorList(Cons(Yellow(),cs1),Cons(Yellow(),cs2)) -> and(True(),eqColorList(cs1,cs2)) eqColorList(Nil(),Cons(c2,cs2)) -> False() eqColorList(Nil(),Nil()) -> True() possible(color,Cons(x,xs),colorednodes) -> possible[Ite][True][Ite](eqColor(color,colorof(x,colorednodes)) ,color ,Cons(x,xs) ,colorednodes) possible(color,Nil(),colorednodes) -> True() possible[Ite][True][Ite](False(),color,Cons(x,xs),colorednodes) -> possible(color,xs,colorednodes) possible[Ite][True][Ite](True(),color,adjs,colorednodes) -> False() - Signature: {!EQ/2,and/2,colornode/3,colornode[Ite][True][Ite]/4,colorof/2,colorof[Ite][True][Ite]/3,colorrest/4 ,colorrest[Ite][True][Let]/5,colorrestthetrick/5,colorrestthetrick[Ite]/6,eqColor/2,eqColorList/2,getAdjs/1 ,getColorListFromCN/1,getNodeFromCN/1,getNodeName/1,graphcolour/2,isPossible/1,notEmpty/1,possible/3 ,possible[Ite][True][Ite]/4,revapp/2,reverse/1,!EQ#/2,and#/2,colornode#/3,colornode[Ite][True][Ite]#/4 ,colorof#/2,colorof[Ite][True][Ite]#/3,colorrest#/4,colorrest[Ite][True][Let]#/5,colorrestthetrick#/5 ,colorrestthetrick[Ite]#/6,eqColor#/2,eqColorList#/2,getAdjs#/1,getColorListFromCN#/1,getNodeFromCN#/1 ,getNodeName#/1,graphcolour#/2,isPossible#/1,notEmpty#/1,possible#/3,possible[Ite][True][Ite]#/4,revapp#/2 ,reverse#/1} / {0/0,Blue/0,CN/2,Cons/2,False/0,N/2,Nil/0,NoColor/0,NotPossible/0,Red/0,S/1,True/0,Yellow/0 ,colorrest[Ite][True][Let][Ite]/6,c_1/2,c_2/0,c_3/1,c_4/0,c_5/1,c_6/0,c_7/2,c_8/0,c_9/0,c_10/0,c_11/0,c_12/0 ,c_13/0,c_14/0,c_15/0,c_16/0,c_17/0,c_18/0,c_19/0,c_20/0,c_21/0,c_22/1,c_23/1,c_24/1,c_25/1,c_26/1,c_27/1 ,c_28/1,c_29/1,c_30/1,c_31/1,c_32/1,c_33/1,c_34/1,c_35/0,c_36/0,c_37/0,c_38/0,c_39/0,c_40/0,c_41/3,c_42/0 ,c_43/0,c_44/0,c_45/0,c_46/2,c_47/0,c_48/1,c_49/0,c_50/1,c_51/0,c_52/0,c_53/0,c_54/1,c_55/0,c_56/0,c_57/0 ,c_58/0,c_59/1,c_60/0,c_61/1,c_62/0,c_63/0,c_64/0,c_65/1,c_66/1,c_67/1,c_68/0} - Obligation: innermost runtime complexity wrt. defined symbols {!EQ#,and#,colornode#,colornode[Ite][True][Ite]#,colorof# ,colorof[Ite][True][Ite]#,colorrest#,colorrest[Ite][True][Let]#,colorrestthetrick#,colorrestthetrick[Ite]# ,eqColor#,eqColorList#,getAdjs#,getColorListFromCN#,getNodeFromCN#,getNodeName#,graphcolour#,isPossible# ,notEmpty#,possible#,possible[Ite][True][Ite]#,revapp#,reverse#} and constructors {0,Blue,CN,Cons,False,N ,Nil,NoColor,NotPossible,Red,S,True,Yellow,colorrest[Ite][True][Let][Ite]} + Applied Processor: EmptyProcessor + Details: The problem is already closed. The intended complexity is O(1). WORST_CASE(?,O(n^4))