YES(O(1),POLY) 804.31/217.13 YES(O(1),POLY) 804.31/217.13 804.31/217.13 We are left with following problem, upon which TcT provides the 804.31/217.13 certificate YES(O(1),POLY). 804.31/217.13 804.31/217.13 Strict Trs: 804.31/217.13 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.13 colorrest[Ite][True][Let](cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 Cons(x, xs), 804.31/217.13 colornode(ncs, x, colorednodes)) 804.31/217.13 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.13 , getNodeName(N(name, adjs)) -> name 804.31/217.13 , getAdjs(N(n, ns)) -> ns 804.31/217.13 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.13 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes) 804.31/217.13 , possible(color, Nil(), colorednodes) -> True() 804.31/217.13 , eqColor(NoColor(), b) -> False() 804.31/217.13 , eqColor(Blue(), NoColor()) -> False() 804.31/217.13 , eqColor(Blue(), Blue()) -> True() 804.31/217.13 , eqColor(Blue(), Red()) -> False() 804.31/217.13 , eqColor(Blue(), Yellow()) -> False() 804.31/217.13 , eqColor(Red(), NoColor()) -> False() 804.31/217.13 , eqColor(Red(), Blue()) -> False() 804.31/217.13 , eqColor(Red(), Red()) -> True() 804.31/217.13 , eqColor(Red(), Yellow()) -> False() 804.31/217.13 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.13 , eqColor(Yellow(), Blue()) -> False() 804.31/217.13 , eqColor(Yellow(), Red()) -> False() 804.31/217.13 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.13 , reverse(xs) -> revapp(xs, Nil()) 804.31/217.13 , isPossible(CN(cl, n)) -> True() 804.31/217.13 , isPossible(NotPossible()) -> False() 804.31/217.13 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.13 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.13 Cons(x, xs), 804.31/217.13 N(n, ns), 804.31/217.13 colorednodes) 804.31/217.13 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.13 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.13 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 and(True(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 and(True(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 and(False(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 and(True(), eqColorList(cs1, cs2)) 804.31/217.13 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.13 , eqColorList(Nil(), Nil()) -> True() 804.31/217.13 , graphcolour(Cons(x, xs), cs) -> 804.31/217.13 reverse(colorrest(cs, 804.31/217.13 cs, 804.31/217.13 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.13 xs)) 804.31/217.13 , getNodeFromCN(CN(cl, n)) -> n 804.31/217.13 , colorrestthetrick(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.13 colorrestthetrick[Ite](eqColorList(cs1, ncs), 804.31/217.13 cs1, 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.13 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.13 node, 804.31/217.13 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.13 , colorof(node, Nil()) -> NoColor() 804.31/217.13 , getColorListFromCN(CN(cl, n)) -> cl 804.31/217.13 , notEmpty(Cons(x, xs)) -> True() 804.31/217.13 , notEmpty(Nil()) -> False() 804.31/217.13 , revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) 804.31/217.13 , revapp(Nil(), rest) -> rest } 804.31/217.13 Weak Trs: 804.31/217.13 { colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.13 CN(cs, node) 804.31/217.13 , colornode[Ite][True][Ite](False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 node, 804.31/217.13 colorednodes) 804.31/217.13 -> colornode(xs, node, colorednodes) 804.31/217.13 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.13 , !EQ(S(x), 0()) -> False() 804.31/217.13 , !EQ(0(), S(y)) -> False() 804.31/217.13 , !EQ(0(), 0()) -> True() 804.31/217.13 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.13 False() 804.31/217.13 , possible[Ite][True][Ite](False(), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes) 804.31/217.13 -> possible(color, xs, colorednodes) 804.31/217.13 , colorof[Ite][True][Ite](True(), 804.31/217.13 node, 804.31/217.13 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.13 -> x 804.31/217.13 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.13 colorof(node, xs) 804.31/217.13 , and(True(), True()) -> True() 804.31/217.13 , and(True(), False()) -> False() 804.31/217.13 , and(False(), True()) -> False() 804.31/217.13 , and(False(), False()) -> False() 804.31/217.13 , colorrestthetrick[Ite](True(), cs1, cs, ncs, colorednodes, rest) 804.31/217.13 -> colorrest(cs, cs1, colorednodes, rest) 804.31/217.13 , colorrestthetrick[Ite](False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 -> colorrestthetrick(xs, cs, ncs, colorednodes, rest) 804.31/217.13 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.13 -> 804.31/217.13 colorrest[Ite][True][Let][Ite](True(), 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 CN(cl, n)) 804.31/217.13 , colorrest[Ite][True][Let](cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 NotPossible()) 804.31/217.13 -> 804.31/217.13 colorrest[Ite][True][Let][Ite](False(), 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 NotPossible()) } 804.31/217.13 Obligation: 804.31/217.13 innermost runtime complexity 804.31/217.13 Answer: 804.31/217.13 YES(O(1),POLY) 804.31/217.13 804.31/217.13 We add the following dependency tuples: 804.31/217.13 804.31/217.13 Strict DPs: 804.31/217.13 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.13 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 Cons(x, xs), 804.31/217.13 colornode(ncs, x, colorednodes)), 804.31/217.13 colornode^#(ncs, x, colorednodes)) 804.31/217.13 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.13 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.13 c_23(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.13 Cons(x, xs), 804.31/217.13 N(n, ns), 804.31/217.13 colorednodes), 804.31/217.13 possible^#(x, ns, colorednodes)) 804.31/217.13 , colornode^#(Nil(), node, colorednodes) -> c_24() 804.31/217.13 , getNodeName^#(N(name, adjs)) -> c_3() 804.31/217.13 , getAdjs^#(N(n, ns)) -> c_4() 804.31/217.13 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.13 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.13 colorof(x, colorednodes)), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes), 804.31/217.13 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.13 colorof^#(x, colorednodes)) 804.31/217.13 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.13 , eqColor^#(NoColor(), b) -> c_7() 804.31/217.13 , eqColor^#(Blue(), NoColor()) -> c_8() 804.31/217.13 , eqColor^#(Blue(), Blue()) -> c_9() 804.31/217.13 , eqColor^#(Blue(), Red()) -> c_10() 804.31/217.13 , eqColor^#(Blue(), Yellow()) -> c_11() 804.31/217.13 , eqColor^#(Red(), NoColor()) -> c_12() 804.31/217.13 , eqColor^#(Red(), Blue()) -> c_13() 804.31/217.13 , eqColor^#(Red(), Red()) -> c_14() 804.31/217.13 , eqColor^#(Red(), Yellow()) -> c_15() 804.31/217.13 , eqColor^#(Yellow(), NoColor()) -> c_16() 804.31/217.13 , eqColor^#(Yellow(), Blue()) -> c_17() 804.31/217.13 , eqColor^#(Yellow(), Red()) -> c_18() 804.31/217.13 , eqColor^#(Yellow(), Yellow()) -> c_19() 804.31/217.13 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.13 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.13 node, 804.31/217.13 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.13 !EQ^#(name, node)) 804.31/217.13 , colorof^#(node, Nil()) -> c_45() 804.31/217.13 , reverse^#(xs) -> c_20(revapp^#(xs, Nil())) 804.31/217.13 , revapp^#(Cons(x, xs), rest) -> c_49(revapp^#(xs, Cons(x, rest))) 804.31/217.13 , revapp^#(Nil(), rest) -> c_50() 804.31/217.13 , isPossible^#(CN(cl, n)) -> c_21() 804.31/217.13 , isPossible^#(NotPossible()) -> c_22() 804.31/217.13 , eqColorList^#(Cons(c1, cs1), Nil()) -> c_25() 804.31/217.13 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.13 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_38(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Nil(), Cons(c2, cs2)) -> c_39() 804.31/217.13 , eqColorList^#(Nil(), Nil()) -> c_40() 804.31/217.13 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.13 c_41(reverse^#(colorrest(cs, 804.31/217.13 cs, 804.31/217.13 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.13 xs)), 804.31/217.13 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.13 colornode^#(cs, x, Nil())) 804.31/217.13 , getNodeFromCN^#(CN(cl, n)) -> c_42() 804.31/217.13 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.13 c_43(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.13 cs1, 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest), 804.31/217.13 eqColorList^#(cs1, ncs)) 804.31/217.13 , getColorListFromCN^#(CN(cl, n)) -> c_46() 804.31/217.13 , notEmpty^#(Cons(x, xs)) -> c_47() 804.31/217.13 , notEmpty^#(Nil()) -> c_48() } 804.31/217.13 Weak DPs: 804.31/217.13 { colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 CN(cl, n)) 804.31/217.13 -> c_67() 804.31/217.13 , colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 NotPossible()) 804.31/217.13 -> c_68() 804.31/217.13 , possible[Ite][True][Ite]^#(True(), color, adjs, colorednodes) -> 804.31/217.13 c_57() 804.31/217.13 , possible[Ite][True][Ite]^#(False(), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes) 804.31/217.13 -> c_58(possible^#(color, xs, colorednodes)) 804.31/217.13 , colornode[Ite][True][Ite]^#(True(), cs, node, colorednodes) -> 804.31/217.13 c_51() 804.31/217.13 , colornode[Ite][True][Ite]^#(False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 node, 804.31/217.13 colorednodes) 804.31/217.13 -> c_52(colornode^#(xs, node, colorednodes)) 804.31/217.13 , and^#(True(), True()) -> c_61() 804.31/217.13 , and^#(True(), False()) -> c_62() 804.31/217.13 , and^#(False(), True()) -> c_63() 804.31/217.13 , and^#(False(), False()) -> c_64() 804.31/217.13 , colorrestthetrick[Ite]^#(True(), 804.31/217.13 cs1, 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 -> c_65(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.13 , colorrestthetrick[Ite]^#(False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 -> c_66(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.13 , colorof[Ite][True][Ite]^#(True(), 804.31/217.13 node, 804.31/217.13 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.13 -> c_59() 804.31/217.13 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.13 c_60(colorof^#(node, xs)) 804.31/217.13 , !EQ^#(S(x), S(y)) -> c_53(!EQ^#(x, y)) 804.31/217.13 , !EQ^#(S(x), 0()) -> c_54() 804.31/217.13 , !EQ^#(0(), S(y)) -> c_55() 804.31/217.13 , !EQ^#(0(), 0()) -> c_56() } 804.31/217.13 804.31/217.13 and mark the set of starting terms. 804.31/217.13 804.31/217.13 We are left with following problem, upon which TcT provides the 804.31/217.13 certificate YES(O(1),POLY). 804.31/217.13 804.31/217.13 Strict DPs: 804.31/217.13 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.13 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 Cons(x, xs), 804.31/217.13 colornode(ncs, x, colorednodes)), 804.31/217.13 colornode^#(ncs, x, colorednodes)) 804.31/217.13 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.13 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.13 c_23(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.13 Cons(x, xs), 804.31/217.13 N(n, ns), 804.31/217.13 colorednodes), 804.31/217.13 possible^#(x, ns, colorednodes)) 804.31/217.13 , colornode^#(Nil(), node, colorednodes) -> c_24() 804.31/217.13 , getNodeName^#(N(name, adjs)) -> c_3() 804.31/217.13 , getAdjs^#(N(n, ns)) -> c_4() 804.31/217.13 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.13 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.13 colorof(x, colorednodes)), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes), 804.31/217.13 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.13 colorof^#(x, colorednodes)) 804.31/217.13 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.13 , eqColor^#(NoColor(), b) -> c_7() 804.31/217.13 , eqColor^#(Blue(), NoColor()) -> c_8() 804.31/217.13 , eqColor^#(Blue(), Blue()) -> c_9() 804.31/217.13 , eqColor^#(Blue(), Red()) -> c_10() 804.31/217.13 , eqColor^#(Blue(), Yellow()) -> c_11() 804.31/217.13 , eqColor^#(Red(), NoColor()) -> c_12() 804.31/217.13 , eqColor^#(Red(), Blue()) -> c_13() 804.31/217.13 , eqColor^#(Red(), Red()) -> c_14() 804.31/217.13 , eqColor^#(Red(), Yellow()) -> c_15() 804.31/217.13 , eqColor^#(Yellow(), NoColor()) -> c_16() 804.31/217.13 , eqColor^#(Yellow(), Blue()) -> c_17() 804.31/217.13 , eqColor^#(Yellow(), Red()) -> c_18() 804.31/217.13 , eqColor^#(Yellow(), Yellow()) -> c_19() 804.31/217.13 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.13 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.13 node, 804.31/217.13 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.13 !EQ^#(name, node)) 804.31/217.13 , colorof^#(node, Nil()) -> c_45() 804.31/217.13 , reverse^#(xs) -> c_20(revapp^#(xs, Nil())) 804.31/217.13 , revapp^#(Cons(x, xs), rest) -> c_49(revapp^#(xs, Cons(x, rest))) 804.31/217.13 , revapp^#(Nil(), rest) -> c_50() 804.31/217.13 , isPossible^#(CN(cl, n)) -> c_21() 804.31/217.13 , isPossible^#(NotPossible()) -> c_22() 804.31/217.13 , eqColorList^#(Cons(c1, cs1), Nil()) -> c_25() 804.31/217.13 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.13 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.13 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.13 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.13 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.13 eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.13 c_38(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.13 , eqColorList^#(Nil(), Cons(c2, cs2)) -> c_39() 804.31/217.13 , eqColorList^#(Nil(), Nil()) -> c_40() 804.31/217.13 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.13 c_41(reverse^#(colorrest(cs, 804.31/217.13 cs, 804.31/217.13 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.13 xs)), 804.31/217.13 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.13 colornode^#(cs, x, Nil())) 804.31/217.13 , getNodeFromCN^#(CN(cl, n)) -> c_42() 804.31/217.13 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.13 c_43(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.13 cs1, 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest), 804.31/217.13 eqColorList^#(cs1, ncs)) 804.31/217.13 , getColorListFromCN^#(CN(cl, n)) -> c_46() 804.31/217.13 , notEmpty^#(Cons(x, xs)) -> c_47() 804.31/217.13 , notEmpty^#(Nil()) -> c_48() } 804.31/217.13 Weak DPs: 804.31/217.13 { colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 CN(cl, n)) 804.31/217.13 -> c_67() 804.31/217.13 , colorrest[Ite][True][Let]^#(cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest, 804.31/217.13 NotPossible()) 804.31/217.13 -> c_68() 804.31/217.13 , possible[Ite][True][Ite]^#(True(), color, adjs, colorednodes) -> 804.31/217.13 c_57() 804.31/217.13 , possible[Ite][True][Ite]^#(False(), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes) 804.31/217.13 -> c_58(possible^#(color, xs, colorednodes)) 804.31/217.13 , colornode[Ite][True][Ite]^#(True(), cs, node, colorednodes) -> 804.31/217.13 c_51() 804.31/217.13 , colornode[Ite][True][Ite]^#(False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 node, 804.31/217.13 colorednodes) 804.31/217.13 -> c_52(colornode^#(xs, node, colorednodes)) 804.31/217.13 , and^#(True(), True()) -> c_61() 804.31/217.13 , and^#(True(), False()) -> c_62() 804.31/217.13 , and^#(False(), True()) -> c_63() 804.31/217.13 , and^#(False(), False()) -> c_64() 804.31/217.13 , colorrestthetrick[Ite]^#(True(), 804.31/217.13 cs1, 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 -> c_65(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.13 , colorrestthetrick[Ite]^#(False(), 804.31/217.13 Cons(x, xs), 804.31/217.13 cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 rest) 804.31/217.13 -> c_66(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.13 , colorof[Ite][True][Ite]^#(True(), 804.31/217.13 node, 804.31/217.13 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.13 -> c_59() 804.31/217.13 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.13 c_60(colorof^#(node, xs)) 804.31/217.13 , !EQ^#(S(x), S(y)) -> c_53(!EQ^#(x, y)) 804.31/217.13 , !EQ^#(S(x), 0()) -> c_54() 804.31/217.13 , !EQ^#(0(), S(y)) -> c_55() 804.31/217.13 , !EQ^#(0(), 0()) -> c_56() } 804.31/217.13 Weak Trs: 804.31/217.13 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.13 colorrest[Ite][True][Let](cs, 804.31/217.13 ncs, 804.31/217.13 colorednodes, 804.31/217.13 Cons(x, xs), 804.31/217.13 colornode(ncs, x, colorednodes)) 804.31/217.13 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.13 , getNodeName(N(name, adjs)) -> name 804.31/217.13 , getAdjs(N(n, ns)) -> ns 804.31/217.13 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.13 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.13 color, 804.31/217.13 Cons(x, xs), 804.31/217.13 colorednodes) 804.31/217.13 , possible(color, Nil(), colorednodes) -> True() 804.31/217.13 , eqColor(NoColor(), b) -> False() 804.31/217.13 , eqColor(Blue(), NoColor()) -> False() 804.31/217.13 , eqColor(Blue(), Blue()) -> True() 804.31/217.13 , eqColor(Blue(), Red()) -> False() 804.31/217.13 , eqColor(Blue(), Yellow()) -> False() 804.31/217.13 , eqColor(Red(), NoColor()) -> False() 804.31/217.13 , eqColor(Red(), Blue()) -> False() 804.31/217.13 , eqColor(Red(), Red()) -> True() 804.31/217.13 , eqColor(Red(), Yellow()) -> False() 804.31/217.13 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.13 , eqColor(Yellow(), Blue()) -> False() 804.31/217.13 , eqColor(Yellow(), Red()) -> False() 804.31/217.13 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.13 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.14 CN(cs, node) 804.31/217.14 , colornode[Ite][True][Ite](False(), 804.31/217.14 Cons(x, xs), 804.31/217.14 node, 804.31/217.14 colorednodes) 804.31/217.14 -> colornode(xs, node, colorednodes) 804.31/217.14 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.14 , !EQ(S(x), 0()) -> False() 804.31/217.14 , !EQ(0(), S(y)) -> False() 804.31/217.14 , !EQ(0(), 0()) -> True() 804.31/217.14 , reverse(xs) -> revapp(xs, Nil()) 804.31/217.14 , isPossible(CN(cl, n)) -> True() 804.31/217.14 , isPossible(NotPossible()) -> False() 804.31/217.14 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.14 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.14 Cons(x, xs), 804.31/217.14 N(n, ns), 804.31/217.14 colorednodes) 804.31/217.14 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.14 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.14 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 and(True(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 and(True(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 and(False(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 and(True(), eqColorList(cs1, cs2)) 804.31/217.14 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.14 , eqColorList(Nil(), Nil()) -> True() 804.31/217.14 , graphcolour(Cons(x, xs), cs) -> 804.31/217.14 reverse(colorrest(cs, 804.31/217.14 cs, 804.31/217.14 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.14 xs)) 804.31/217.14 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.14 False() 804.31/217.14 , possible[Ite][True][Ite](False(), 804.31/217.14 color, 804.31/217.14 Cons(x, xs), 804.31/217.14 colorednodes) 804.31/217.14 -> possible(color, xs, colorednodes) 804.31/217.14 , getNodeFromCN(CN(cl, n)) -> n 804.31/217.14 , colorrestthetrick(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.14 colorrestthetrick[Ite](eqColorList(cs1, ncs), 804.31/217.14 cs1, 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest) 804.31/217.14 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.14 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.14 node, 804.31/217.14 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.14 , colorof(node, Nil()) -> NoColor() 804.31/217.14 , colorof[Ite][True][Ite](True(), 804.31/217.14 node, 804.31/217.14 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.14 -> x 804.31/217.14 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.14 colorof(node, xs) 804.31/217.14 , and(True(), True()) -> True() 804.31/217.14 , and(True(), False()) -> False() 804.31/217.14 , and(False(), True()) -> False() 804.31/217.14 , and(False(), False()) -> False() 804.31/217.14 , colorrestthetrick[Ite](True(), cs1, cs, ncs, colorednodes, rest) 804.31/217.14 -> colorrest(cs, cs1, colorednodes, rest) 804.31/217.14 , colorrestthetrick[Ite](False(), 804.31/217.14 Cons(x, xs), 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest) 804.31/217.14 -> colorrestthetrick(xs, cs, ncs, colorednodes, rest) 804.31/217.14 , getColorListFromCN(CN(cl, n)) -> cl 804.31/217.14 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.14 -> 804.31/217.14 colorrest[Ite][True][Let][Ite](True(), 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 CN(cl, n)) 804.31/217.14 , colorrest[Ite][True][Let](cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 NotPossible()) 804.31/217.14 -> 804.31/217.14 colorrest[Ite][True][Let][Ite](False(), 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 NotPossible()) 804.31/217.14 , notEmpty(Cons(x, xs)) -> True() 804.31/217.14 , notEmpty(Nil()) -> False() 804.31/217.14 , revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) 804.31/217.14 , revapp(Nil(), rest) -> rest } 804.31/217.14 Obligation: 804.31/217.14 innermost runtime complexity 804.31/217.14 Answer: 804.31/217.14 YES(O(1),POLY) 804.31/217.14 804.31/217.14 We estimate the number of application of 804.31/217.14 {5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,26,27,28,29,43,44,46,48,49,50} 804.31/217.14 by applications of 804.31/217.14 Pre({5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,26,27,28,29,43,44,46,48,49,50}) 804.31/217.14 = {7,24,25,30,31,32,33,34,35,36,37,38,39,40,41,42,47}. Here rules 804.31/217.14 are labeled as follows: 804.31/217.14 804.31/217.14 DPs: 804.31/217.14 { 1: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.14 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 Cons(x, xs), 804.31/217.14 colornode(ncs, x, colorednodes)), 804.31/217.14 colornode^#(ncs, x, colorednodes)) 804.31/217.14 , 2: colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.14 , 3: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.14 c_23(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.14 Cons(x, xs), 804.31/217.14 N(n, ns), 804.31/217.14 colorednodes), 804.31/217.14 possible^#(x, ns, colorednodes)) 804.31/217.14 , 4: colornode^#(Nil(), node, colorednodes) -> c_24() 804.31/217.14 , 5: getNodeName^#(N(name, adjs)) -> c_3() 804.31/217.14 , 6: getAdjs^#(N(n, ns)) -> c_4() 804.31/217.14 , 7: possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.14 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.14 colorof(x, colorednodes)), 804.31/217.14 color, 804.31/217.14 Cons(x, xs), 804.31/217.14 colorednodes), 804.31/217.14 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.14 colorof^#(x, colorednodes)) 804.31/217.14 , 8: possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.14 , 9: eqColor^#(NoColor(), b) -> c_7() 804.31/217.14 , 10: eqColor^#(Blue(), NoColor()) -> c_8() 804.31/217.14 , 11: eqColor^#(Blue(), Blue()) -> c_9() 804.31/217.14 , 12: eqColor^#(Blue(), Red()) -> c_10() 804.31/217.14 , 13: eqColor^#(Blue(), Yellow()) -> c_11() 804.31/217.14 , 14: eqColor^#(Red(), NoColor()) -> c_12() 804.31/217.14 , 15: eqColor^#(Red(), Blue()) -> c_13() 804.31/217.14 , 16: eqColor^#(Red(), Red()) -> c_14() 804.31/217.14 , 17: eqColor^#(Red(), Yellow()) -> c_15() 804.31/217.14 , 18: eqColor^#(Yellow(), NoColor()) -> c_16() 804.31/217.14 , 19: eqColor^#(Yellow(), Blue()) -> c_17() 804.31/217.14 , 20: eqColor^#(Yellow(), Red()) -> c_18() 804.31/217.14 , 21: eqColor^#(Yellow(), Yellow()) -> c_19() 804.31/217.14 , 22: colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.14 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.14 node, 804.31/217.14 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.14 !EQ^#(name, node)) 804.31/217.14 , 23: colorof^#(node, Nil()) -> c_45() 804.31/217.14 , 24: reverse^#(xs) -> c_20(revapp^#(xs, Nil())) 804.31/217.14 , 25: revapp^#(Cons(x, xs), rest) -> 804.31/217.14 c_49(revapp^#(xs, Cons(x, rest))) 804.31/217.14 , 26: revapp^#(Nil(), rest) -> c_50() 804.31/217.14 , 27: isPossible^#(CN(cl, n)) -> c_21() 804.31/217.14 , 28: isPossible^#(NotPossible()) -> c_22() 804.31/217.14 , 29: eqColorList^#(Cons(c1, cs1), Nil()) -> c_25() 804.31/217.14 , 30: eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.14 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 31: eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 32: eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , 33: eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 34: eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 35: eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 36: eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 37: eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , 38: eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 39: eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 40: eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 41: eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , 42: eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_38(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , 43: eqColorList^#(Nil(), Cons(c2, cs2)) -> c_39() 804.31/217.14 , 44: eqColorList^#(Nil(), Nil()) -> c_40() 804.31/217.14 , 45: graphcolour^#(Cons(x, xs), cs) -> 804.31/217.14 c_41(reverse^#(colorrest(cs, 804.31/217.14 cs, 804.31/217.14 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.14 xs)), 804.31/217.14 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.14 colornode^#(cs, x, Nil())) 804.31/217.14 , 46: getNodeFromCN^#(CN(cl, n)) -> c_42() 804.31/217.14 , 47: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.14 c_43(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.14 cs1, 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest), 804.31/217.14 eqColorList^#(cs1, ncs)) 804.31/217.14 , 48: getColorListFromCN^#(CN(cl, n)) -> c_46() 804.31/217.14 , 49: notEmpty^#(Cons(x, xs)) -> c_47() 804.31/217.14 , 50: notEmpty^#(Nil()) -> c_48() 804.31/217.14 , 51: colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 CN(cl, n)) 804.31/217.14 -> c_67() 804.31/217.14 , 52: colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 NotPossible()) 804.31/217.14 -> c_68() 804.31/217.14 , 53: possible[Ite][True][Ite]^#(True(), color, adjs, colorednodes) 804.31/217.14 -> c_57() 804.31/217.14 , 54: possible[Ite][True][Ite]^#(False(), 804.31/217.14 color, 804.31/217.14 Cons(x, xs), 804.31/217.14 colorednodes) 804.31/217.14 -> c_58(possible^#(color, xs, colorednodes)) 804.31/217.14 , 55: colornode[Ite][True][Ite]^#(True(), cs, node, colorednodes) 804.31/217.14 -> c_51() 804.31/217.14 , 56: colornode[Ite][True][Ite]^#(False(), 804.31/217.14 Cons(x, xs), 804.31/217.14 node, 804.31/217.14 colorednodes) 804.31/217.14 -> c_52(colornode^#(xs, node, colorednodes)) 804.31/217.14 , 57: and^#(True(), True()) -> c_61() 804.31/217.14 , 58: and^#(True(), False()) -> c_62() 804.31/217.14 , 59: and^#(False(), True()) -> c_63() 804.31/217.14 , 60: and^#(False(), False()) -> c_64() 804.31/217.14 , 61: colorrestthetrick[Ite]^#(True(), 804.31/217.14 cs1, 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest) 804.31/217.14 -> c_65(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.14 , 62: colorrestthetrick[Ite]^#(False(), 804.31/217.14 Cons(x, xs), 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest) 804.31/217.14 -> c_66(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.14 , 63: colorof[Ite][True][Ite]^#(True(), 804.31/217.14 node, 804.31/217.14 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.14 -> c_59() 804.31/217.14 , 64: colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.14 c_60(colorof^#(node, xs)) 804.31/217.14 , 65: !EQ^#(S(x), S(y)) -> c_53(!EQ^#(x, y)) 804.31/217.14 , 66: !EQ^#(S(x), 0()) -> c_54() 804.31/217.14 , 67: !EQ^#(0(), S(y)) -> c_55() 804.31/217.14 , 68: !EQ^#(0(), 0()) -> c_56() } 804.31/217.14 804.31/217.14 We are left with following problem, upon which TcT provides the 804.31/217.14 certificate YES(O(1),POLY). 804.31/217.14 804.31/217.14 Strict DPs: 804.31/217.14 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.14 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 Cons(x, xs), 804.31/217.14 colornode(ncs, x, colorednodes)), 804.31/217.14 colornode^#(ncs, x, colorednodes)) 804.31/217.14 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.14 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.14 c_23(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.14 Cons(x, xs), 804.31/217.14 N(n, ns), 804.31/217.14 colorednodes), 804.31/217.14 possible^#(x, ns, colorednodes)) 804.31/217.14 , colornode^#(Nil(), node, colorednodes) -> c_24() 804.31/217.14 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.14 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.14 colorof(x, colorednodes)), 804.31/217.14 color, 804.31/217.14 Cons(x, xs), 804.31/217.14 colorednodes), 804.31/217.14 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.14 colorof^#(x, colorednodes)) 804.31/217.14 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.14 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.14 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.14 node, 804.31/217.14 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.14 !EQ^#(name, node)) 804.31/217.14 , colorof^#(node, Nil()) -> c_45() 804.31/217.14 , reverse^#(xs) -> c_20(revapp^#(xs, Nil())) 804.31/217.14 , revapp^#(Cons(x, xs), rest) -> c_49(revapp^#(xs, Cons(x, rest))) 804.31/217.14 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.14 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.14 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.14 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.14 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.14 eqColorList^#(cs1, cs2)) 804.31/217.14 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.14 c_38(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.14 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.14 c_41(reverse^#(colorrest(cs, 804.31/217.14 cs, 804.31/217.14 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.14 xs)), 804.31/217.14 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.14 colornode^#(cs, x, Nil())) 804.31/217.14 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.14 c_43(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.14 cs1, 804.31/217.14 cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest), 804.31/217.14 eqColorList^#(cs1, ncs)) } 804.31/217.14 Weak DPs: 804.31/217.14 { colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 CN(cl, n)) 804.31/217.14 -> c_67() 804.31/217.14 , colorrest[Ite][True][Let]^#(cs, 804.31/217.14 ncs, 804.31/217.14 colorednodes, 804.31/217.14 rest, 804.31/217.14 NotPossible()) 804.31/217.14 -> c_68() 804.31/217.14 , getNodeName^#(N(name, adjs)) -> c_3() 804.31/217.14 , getAdjs^#(N(n, ns)) -> c_4() 804.31/217.14 , possible[Ite][True][Ite]^#(True(), color, adjs, colorednodes) -> 804.31/217.14 c_57() 804.31/217.14 , possible[Ite][True][Ite]^#(False(), 804.31/217.14 color, 804.31/217.14 Cons(x, xs), 804.31/217.14 colorednodes) 804.31/217.14 -> c_58(possible^#(color, xs, colorednodes)) 804.31/217.14 , eqColor^#(NoColor(), b) -> c_7() 804.31/217.14 , eqColor^#(Blue(), NoColor()) -> c_8() 804.31/217.14 , eqColor^#(Blue(), Blue()) -> c_9() 804.31/217.14 , eqColor^#(Blue(), Red()) -> c_10() 804.31/217.14 , eqColor^#(Blue(), Yellow()) -> c_11() 804.31/217.14 , eqColor^#(Red(), NoColor()) -> c_12() 804.31/217.14 , eqColor^#(Red(), Blue()) -> c_13() 804.31/217.14 , eqColor^#(Red(), Red()) -> c_14() 804.31/217.14 , eqColor^#(Red(), Yellow()) -> c_15() 804.31/217.14 , eqColor^#(Yellow(), NoColor()) -> c_16() 804.31/217.14 , eqColor^#(Yellow(), Blue()) -> c_17() 804.31/217.14 , eqColor^#(Yellow(), Red()) -> c_18() 804.31/217.14 , eqColor^#(Yellow(), Yellow()) -> c_19() 804.31/217.14 , revapp^#(Nil(), rest) -> c_50() 804.31/217.14 , isPossible^#(CN(cl, n)) -> c_21() 804.31/217.14 , isPossible^#(NotPossible()) -> c_22() 804.31/217.15 , colornode[Ite][True][Ite]^#(True(), cs, node, colorednodes) -> 804.31/217.15 c_51() 804.31/217.15 , colornode[Ite][True][Ite]^#(False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 node, 804.31/217.15 colorednodes) 804.31/217.15 -> c_52(colornode^#(xs, node, colorednodes)) 804.31/217.15 , eqColorList^#(Cons(c1, cs1), Nil()) -> c_25() 804.31/217.15 , eqColorList^#(Nil(), Cons(c2, cs2)) -> c_39() 804.31/217.15 , eqColorList^#(Nil(), Nil()) -> c_40() 804.31/217.15 , and^#(True(), True()) -> c_61() 804.31/217.15 , and^#(True(), False()) -> c_62() 804.31/217.15 , and^#(False(), True()) -> c_63() 804.31/217.15 , and^#(False(), False()) -> c_64() 804.31/217.15 , getNodeFromCN^#(CN(cl, n)) -> c_42() 804.31/217.15 , colorrestthetrick[Ite]^#(True(), 804.31/217.15 cs1, 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> c_65(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.15 , colorrestthetrick[Ite]^#(False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> c_66(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.15 , colorof[Ite][True][Ite]^#(True(), 804.31/217.15 node, 804.31/217.15 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.15 -> c_59() 804.31/217.15 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.15 c_60(colorof^#(node, xs)) 804.31/217.15 , !EQ^#(S(x), S(y)) -> c_53(!EQ^#(x, y)) 804.31/217.15 , !EQ^#(S(x), 0()) -> c_54() 804.31/217.15 , !EQ^#(0(), S(y)) -> c_55() 804.31/217.15 , !EQ^#(0(), 0()) -> c_56() 804.31/217.15 , getColorListFromCN^#(CN(cl, n)) -> c_46() 804.31/217.15 , notEmpty^#(Cons(x, xs)) -> c_47() 804.31/217.15 , notEmpty^#(Nil()) -> c_48() } 804.31/217.15 Weak Trs: 804.31/217.15 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.15 colorrest[Ite][True][Let](cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 Cons(x, xs), 804.31/217.15 colornode(ncs, x, colorednodes)) 804.31/217.15 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.15 , getNodeName(N(name, adjs)) -> name 804.31/217.15 , getAdjs(N(n, ns)) -> ns 804.31/217.15 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.15 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes) 804.31/217.15 , possible(color, Nil(), colorednodes) -> True() 804.31/217.15 , eqColor(NoColor(), b) -> False() 804.31/217.15 , eqColor(Blue(), NoColor()) -> False() 804.31/217.15 , eqColor(Blue(), Blue()) -> True() 804.31/217.15 , eqColor(Blue(), Red()) -> False() 804.31/217.15 , eqColor(Blue(), Yellow()) -> False() 804.31/217.15 , eqColor(Red(), NoColor()) -> False() 804.31/217.15 , eqColor(Red(), Blue()) -> False() 804.31/217.15 , eqColor(Red(), Red()) -> True() 804.31/217.15 , eqColor(Red(), Yellow()) -> False() 804.31/217.15 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.15 , eqColor(Yellow(), Blue()) -> False() 804.31/217.15 , eqColor(Yellow(), Red()) -> False() 804.31/217.15 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.15 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.15 CN(cs, node) 804.31/217.15 , colornode[Ite][True][Ite](False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 node, 804.31/217.15 colorednodes) 804.31/217.15 -> colornode(xs, node, colorednodes) 804.31/217.15 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.15 , !EQ(S(x), 0()) -> False() 804.31/217.15 , !EQ(0(), S(y)) -> False() 804.31/217.15 , !EQ(0(), 0()) -> True() 804.31/217.15 , reverse(xs) -> revapp(xs, Nil()) 804.31/217.15 , isPossible(CN(cl, n)) -> True() 804.31/217.15 , isPossible(NotPossible()) -> False() 804.31/217.15 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.15 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.15 Cons(x, xs), 804.31/217.15 N(n, ns), 804.31/217.15 colorednodes) 804.31/217.15 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.15 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.15 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.15 , eqColorList(Nil(), Nil()) -> True() 804.31/217.15 , graphcolour(Cons(x, xs), cs) -> 804.31/217.15 reverse(colorrest(cs, 804.31/217.15 cs, 804.31/217.15 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.15 xs)) 804.31/217.15 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.15 False() 804.31/217.15 , possible[Ite][True][Ite](False(), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes) 804.31/217.15 -> possible(color, xs, colorednodes) 804.31/217.15 , getNodeFromCN(CN(cl, n)) -> n 804.31/217.15 , colorrestthetrick(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.15 colorrestthetrick[Ite](eqColorList(cs1, ncs), 804.31/217.15 cs1, 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.15 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.15 node, 804.31/217.15 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.15 , colorof(node, Nil()) -> NoColor() 804.31/217.15 , colorof[Ite][True][Ite](True(), 804.31/217.15 node, 804.31/217.15 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.15 -> x 804.31/217.15 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.15 colorof(node, xs) 804.31/217.15 , and(True(), True()) -> True() 804.31/217.15 , and(True(), False()) -> False() 804.31/217.15 , and(False(), True()) -> False() 804.31/217.15 , and(False(), False()) -> False() 804.31/217.15 , colorrestthetrick[Ite](True(), cs1, cs, ncs, colorednodes, rest) 804.31/217.15 -> colorrest(cs, cs1, colorednodes, rest) 804.31/217.15 , colorrestthetrick[Ite](False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> colorrestthetrick(xs, cs, ncs, colorednodes, rest) 804.31/217.15 , getColorListFromCN(CN(cl, n)) -> cl 804.31/217.15 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.15 -> 804.31/217.15 colorrest[Ite][True][Let][Ite](True(), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 CN(cl, n)) 804.31/217.15 , colorrest[Ite][True][Let](cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 NotPossible()) 804.31/217.15 -> 804.31/217.15 colorrest[Ite][True][Let][Ite](False(), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 NotPossible()) 804.31/217.15 , notEmpty(Cons(x, xs)) -> True() 804.31/217.15 , notEmpty(Nil()) -> False() 804.31/217.15 , revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) 804.31/217.15 , revapp(Nil(), rest) -> rest } 804.31/217.15 Obligation: 804.31/217.15 innermost runtime complexity 804.31/217.15 Answer: 804.31/217.15 YES(O(1),POLY) 804.31/217.15 804.31/217.15 The following weak DPs constitute a sub-graph of the DG that is 804.31/217.15 closed under successors. The DPs are removed. 804.31/217.15 804.31/217.15 { colorrest[Ite][True][Let]^#(cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 CN(cl, n)) 804.31/217.15 -> c_67() 804.31/217.15 , colorrest[Ite][True][Let]^#(cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 NotPossible()) 804.31/217.15 -> c_68() 804.31/217.15 , getNodeName^#(N(name, adjs)) -> c_3() 804.31/217.15 , getAdjs^#(N(n, ns)) -> c_4() 804.31/217.15 , possible[Ite][True][Ite]^#(True(), color, adjs, colorednodes) -> 804.31/217.15 c_57() 804.31/217.15 , eqColor^#(NoColor(), b) -> c_7() 804.31/217.15 , eqColor^#(Blue(), NoColor()) -> c_8() 804.31/217.15 , eqColor^#(Blue(), Blue()) -> c_9() 804.31/217.15 , eqColor^#(Blue(), Red()) -> c_10() 804.31/217.15 , eqColor^#(Blue(), Yellow()) -> c_11() 804.31/217.15 , eqColor^#(Red(), NoColor()) -> c_12() 804.31/217.15 , eqColor^#(Red(), Blue()) -> c_13() 804.31/217.15 , eqColor^#(Red(), Red()) -> c_14() 804.31/217.15 , eqColor^#(Red(), Yellow()) -> c_15() 804.31/217.15 , eqColor^#(Yellow(), NoColor()) -> c_16() 804.31/217.15 , eqColor^#(Yellow(), Blue()) -> c_17() 804.31/217.15 , eqColor^#(Yellow(), Red()) -> c_18() 804.31/217.15 , eqColor^#(Yellow(), Yellow()) -> c_19() 804.31/217.15 , revapp^#(Nil(), rest) -> c_50() 804.31/217.15 , isPossible^#(CN(cl, n)) -> c_21() 804.31/217.15 , isPossible^#(NotPossible()) -> c_22() 804.31/217.15 , colornode[Ite][True][Ite]^#(True(), cs, node, colorednodes) -> 804.31/217.15 c_51() 804.31/217.15 , eqColorList^#(Cons(c1, cs1), Nil()) -> c_25() 804.31/217.15 , eqColorList^#(Nil(), Cons(c2, cs2)) -> c_39() 804.31/217.15 , eqColorList^#(Nil(), Nil()) -> c_40() 804.31/217.15 , and^#(True(), True()) -> c_61() 804.31/217.15 , and^#(True(), False()) -> c_62() 804.31/217.15 , and^#(False(), True()) -> c_63() 804.31/217.15 , and^#(False(), False()) -> c_64() 804.31/217.15 , getNodeFromCN^#(CN(cl, n)) -> c_42() 804.31/217.15 , colorof[Ite][True][Ite]^#(True(), 804.31/217.15 node, 804.31/217.15 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.15 -> c_59() 804.31/217.15 , !EQ^#(S(x), S(y)) -> c_53(!EQ^#(x, y)) 804.31/217.15 , !EQ^#(S(x), 0()) -> c_54() 804.31/217.15 , !EQ^#(0(), S(y)) -> c_55() 804.31/217.15 , !EQ^#(0(), 0()) -> c_56() 804.31/217.15 , getColorListFromCN^#(CN(cl, n)) -> c_46() 804.31/217.15 , notEmpty^#(Cons(x, xs)) -> c_47() 804.31/217.15 , notEmpty^#(Nil()) -> c_48() } 804.31/217.15 804.31/217.15 We are left with following problem, upon which TcT provides the 804.31/217.15 certificate YES(O(1),POLY). 804.31/217.15 804.31/217.15 Strict DPs: 804.31/217.15 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.15 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 Cons(x, xs), 804.31/217.15 colornode(ncs, x, colorednodes)), 804.31/217.15 colornode^#(ncs, x, colorednodes)) 804.31/217.15 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.15 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.15 c_23(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.15 Cons(x, xs), 804.31/217.15 N(n, ns), 804.31/217.15 colorednodes), 804.31/217.15 possible^#(x, ns, colorednodes)) 804.31/217.15 , colornode^#(Nil(), node, colorednodes) -> c_24() 804.31/217.15 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.15 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.15 colorof(x, colorednodes)), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes), 804.31/217.15 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.15 colorof^#(x, colorednodes)) 804.31/217.15 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.15 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.15 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.15 node, 804.31/217.15 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.15 !EQ^#(name, node)) 804.31/217.15 , colorof^#(node, Nil()) -> c_45() 804.31/217.15 , reverse^#(xs) -> c_20(revapp^#(xs, Nil())) 804.31/217.15 , revapp^#(Cons(x, xs), rest) -> c_49(revapp^#(xs, Cons(x, rest))) 804.31/217.15 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.15 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 c_38(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.15 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.15 c_41(reverse^#(colorrest(cs, 804.31/217.15 cs, 804.31/217.15 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.15 xs)), 804.31/217.15 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.15 colornode^#(cs, x, Nil())) 804.31/217.15 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.15 c_43(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.15 cs1, 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest), 804.31/217.15 eqColorList^#(cs1, ncs)) } 804.31/217.15 Weak DPs: 804.31/217.15 { possible[Ite][True][Ite]^#(False(), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes) 804.31/217.15 -> c_58(possible^#(color, xs, colorednodes)) 804.31/217.15 , colornode[Ite][True][Ite]^#(False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 node, 804.31/217.15 colorednodes) 804.31/217.15 -> c_52(colornode^#(xs, node, colorednodes)) 804.31/217.15 , colorrestthetrick[Ite]^#(True(), 804.31/217.15 cs1, 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> c_65(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.15 , colorrestthetrick[Ite]^#(False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> c_66(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.15 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.15 c_60(colorof^#(node, xs)) } 804.31/217.15 Weak Trs: 804.31/217.15 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.15 colorrest[Ite][True][Let](cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 Cons(x, xs), 804.31/217.15 colornode(ncs, x, colorednodes)) 804.31/217.15 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.15 , getNodeName(N(name, adjs)) -> name 804.31/217.15 , getAdjs(N(n, ns)) -> ns 804.31/217.15 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.15 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes) 804.31/217.15 , possible(color, Nil(), colorednodes) -> True() 804.31/217.15 , eqColor(NoColor(), b) -> False() 804.31/217.15 , eqColor(Blue(), NoColor()) -> False() 804.31/217.15 , eqColor(Blue(), Blue()) -> True() 804.31/217.15 , eqColor(Blue(), Red()) -> False() 804.31/217.15 , eqColor(Blue(), Yellow()) -> False() 804.31/217.15 , eqColor(Red(), NoColor()) -> False() 804.31/217.15 , eqColor(Red(), Blue()) -> False() 804.31/217.15 , eqColor(Red(), Red()) -> True() 804.31/217.15 , eqColor(Red(), Yellow()) -> False() 804.31/217.15 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.15 , eqColor(Yellow(), Blue()) -> False() 804.31/217.15 , eqColor(Yellow(), Red()) -> False() 804.31/217.15 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.15 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.15 CN(cs, node) 804.31/217.15 , colornode[Ite][True][Ite](False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 node, 804.31/217.15 colorednodes) 804.31/217.15 -> colornode(xs, node, colorednodes) 804.31/217.15 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.15 , !EQ(S(x), 0()) -> False() 804.31/217.15 , !EQ(0(), S(y)) -> False() 804.31/217.15 , !EQ(0(), 0()) -> True() 804.31/217.15 , reverse(xs) -> revapp(xs, Nil()) 804.31/217.15 , isPossible(CN(cl, n)) -> True() 804.31/217.15 , isPossible(NotPossible()) -> False() 804.31/217.15 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.15 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.15 Cons(x, xs), 804.31/217.15 N(n, ns), 804.31/217.15 colorednodes) 804.31/217.15 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.15 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.15 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 and(False(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.15 and(True(), eqColorList(cs1, cs2)) 804.31/217.15 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.15 , eqColorList(Nil(), Nil()) -> True() 804.31/217.15 , graphcolour(Cons(x, xs), cs) -> 804.31/217.15 reverse(colorrest(cs, 804.31/217.15 cs, 804.31/217.15 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.15 xs)) 804.31/217.15 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.15 False() 804.31/217.15 , possible[Ite][True][Ite](False(), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes) 804.31/217.15 -> possible(color, xs, colorednodes) 804.31/217.15 , getNodeFromCN(CN(cl, n)) -> n 804.31/217.15 , colorrestthetrick(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.15 colorrestthetrick[Ite](eqColorList(cs1, ncs), 804.31/217.15 cs1, 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.15 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.15 node, 804.31/217.15 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.15 , colorof(node, Nil()) -> NoColor() 804.31/217.15 , colorof[Ite][True][Ite](True(), 804.31/217.15 node, 804.31/217.15 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.15 -> x 804.31/217.15 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.15 colorof(node, xs) 804.31/217.15 , and(True(), True()) -> True() 804.31/217.15 , and(True(), False()) -> False() 804.31/217.15 , and(False(), True()) -> False() 804.31/217.15 , and(False(), False()) -> False() 804.31/217.15 , colorrestthetrick[Ite](True(), cs1, cs, ncs, colorednodes, rest) 804.31/217.15 -> colorrest(cs, cs1, colorednodes, rest) 804.31/217.15 , colorrestthetrick[Ite](False(), 804.31/217.15 Cons(x, xs), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest) 804.31/217.15 -> colorrestthetrick(xs, cs, ncs, colorednodes, rest) 804.31/217.15 , getColorListFromCN(CN(cl, n)) -> cl 804.31/217.15 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.15 -> 804.31/217.15 colorrest[Ite][True][Let][Ite](True(), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 CN(cl, n)) 804.31/217.15 , colorrest[Ite][True][Let](cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 NotPossible()) 804.31/217.15 -> 804.31/217.15 colorrest[Ite][True][Let][Ite](False(), 804.31/217.15 cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 rest, 804.31/217.15 NotPossible()) 804.31/217.15 , notEmpty(Cons(x, xs)) -> True() 804.31/217.15 , notEmpty(Nil()) -> False() 804.31/217.15 , revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) 804.31/217.15 , revapp(Nil(), rest) -> rest } 804.31/217.15 Obligation: 804.31/217.15 innermost runtime complexity 804.31/217.15 Answer: 804.31/217.15 YES(O(1),POLY) 804.31/217.15 804.31/217.15 Due to missing edges in the dependency-graph, the right-hand sides 804.31/217.15 of following rules could be simplified: 804.31/217.15 804.31/217.15 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.15 c_1(colorrest[Ite][True][Let]^#(cs, 804.31/217.15 ncs, 804.31/217.15 colorednodes, 804.31/217.15 Cons(x, xs), 804.31/217.15 colornode(ncs, x, colorednodes)), 804.31/217.15 colornode^#(ncs, x, colorednodes)) 804.31/217.15 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.15 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.15 colorof(x, colorednodes)), 804.31/217.15 color, 804.31/217.15 Cons(x, xs), 804.31/217.15 colorednodes), 804.31/217.15 eqColor^#(color, colorof(x, colorednodes)), 804.31/217.15 colorof^#(x, colorednodes)) 804.31/217.15 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.15 c_44(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.15 node, 804.31/217.15 Cons(CN(cl, N(name, adjs)), xs)), 804.31/217.15 !EQ^#(name, node)) 804.31/217.15 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.15 c_26(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.15 c_27(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.15 c_28(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.15 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.15 c_29(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.15 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_30(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_31(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_32(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_33(and^#(True(), eqColorList(cs1, cs2)), eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_34(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_35(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_36(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_37(and^#(False(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_38(and^#(True(), eqColorList(cs1, cs2)), 804.31/217.16 eqColorList^#(cs1, cs2)) } 804.31/217.16 804.31/217.16 We are left with following problem, upon which TcT provides the 804.31/217.16 certificate YES(O(1),POLY). 804.31/217.16 804.31/217.16 Strict DPs: 804.31/217.16 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.16 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.16 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.16 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.16 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.16 Cons(x, xs), 804.31/217.16 N(n, ns), 804.31/217.16 colorednodes), 804.31/217.16 possible^#(x, ns, colorednodes)) 804.31/217.16 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.16 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.16 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.16 colorof(x, colorednodes)), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes), 804.31/217.16 colorof^#(x, colorednodes)) 804.31/217.16 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.16 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.16 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.16 node, 804.31/217.16 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.16 , colorof^#(node, Nil()) -> c_8() 804.31/217.16 , reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.16 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.16 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.16 c_11(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_12(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_13(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_14(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_15(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_16(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_17(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_18(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_19(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_20(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_21(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_22(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_23(eqColorList^#(cs1, cs2)) 804.31/217.16 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.16 c_24(reverse^#(colorrest(cs, 804.31/217.16 cs, 804.31/217.16 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.16 xs)), 804.31/217.16 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.16 colornode^#(cs, x, Nil())) 804.31/217.16 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.16 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.16 cs1, 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest), 804.31/217.16 eqColorList^#(cs1, ncs)) } 804.31/217.16 Weak DPs: 804.31/217.16 { possible[Ite][True][Ite]^#(False(), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.16 , colornode[Ite][True][Ite]^#(False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 node, 804.31/217.16 colorednodes) 804.31/217.16 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.16 , colorrestthetrick[Ite]^#(True(), 804.31/217.16 cs1, 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.16 , colorrestthetrick[Ite]^#(False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.16 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.16 c_30(colorof^#(node, xs)) } 804.31/217.16 Weak Trs: 804.31/217.16 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.16 colorrest[Ite][True][Let](cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 Cons(x, xs), 804.31/217.16 colornode(ncs, x, colorednodes)) 804.31/217.16 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.16 , getNodeName(N(name, adjs)) -> name 804.31/217.16 , getAdjs(N(n, ns)) -> ns 804.31/217.16 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.16 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 , possible(color, Nil(), colorednodes) -> True() 804.31/217.16 , eqColor(NoColor(), b) -> False() 804.31/217.16 , eqColor(Blue(), NoColor()) -> False() 804.31/217.16 , eqColor(Blue(), Blue()) -> True() 804.31/217.16 , eqColor(Blue(), Red()) -> False() 804.31/217.16 , eqColor(Blue(), Yellow()) -> False() 804.31/217.16 , eqColor(Red(), NoColor()) -> False() 804.31/217.16 , eqColor(Red(), Blue()) -> False() 804.31/217.16 , eqColor(Red(), Red()) -> True() 804.31/217.16 , eqColor(Red(), Yellow()) -> False() 804.31/217.16 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.16 , eqColor(Yellow(), Blue()) -> False() 804.31/217.16 , eqColor(Yellow(), Red()) -> False() 804.31/217.16 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.16 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.16 CN(cs, node) 804.31/217.16 , colornode[Ite][True][Ite](False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 node, 804.31/217.16 colorednodes) 804.31/217.16 -> colornode(xs, node, colorednodes) 804.31/217.16 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.16 , !EQ(S(x), 0()) -> False() 804.31/217.16 , !EQ(0(), S(y)) -> False() 804.31/217.16 , !EQ(0(), 0()) -> True() 804.31/217.16 , reverse(xs) -> revapp(xs, Nil()) 804.31/217.16 , isPossible(CN(cl, n)) -> True() 804.31/217.16 , isPossible(NotPossible()) -> False() 804.31/217.16 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.16 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.16 Cons(x, xs), 804.31/217.16 N(n, ns), 804.31/217.16 colorednodes) 804.31/217.16 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.16 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.16 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.16 , eqColorList(Nil(), Nil()) -> True() 804.31/217.16 , graphcolour(Cons(x, xs), cs) -> 804.31/217.16 reverse(colorrest(cs, 804.31/217.16 cs, 804.31/217.16 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.16 xs)) 804.31/217.16 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.16 False() 804.31/217.16 , possible[Ite][True][Ite](False(), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 -> possible(color, xs, colorednodes) 804.31/217.16 , getNodeFromCN(CN(cl, n)) -> n 804.31/217.16 , colorrestthetrick(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.16 colorrestthetrick[Ite](eqColorList(cs1, ncs), 804.31/217.16 cs1, 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.16 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.16 node, 804.31/217.16 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.16 , colorof(node, Nil()) -> NoColor() 804.31/217.16 , colorof[Ite][True][Ite](True(), 804.31/217.16 node, 804.31/217.16 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.16 -> x 804.31/217.16 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.16 colorof(node, xs) 804.31/217.16 , and(True(), True()) -> True() 804.31/217.16 , and(True(), False()) -> False() 804.31/217.16 , and(False(), True()) -> False() 804.31/217.16 , and(False(), False()) -> False() 804.31/217.16 , colorrestthetrick[Ite](True(), cs1, cs, ncs, colorednodes, rest) 804.31/217.16 -> colorrest(cs, cs1, colorednodes, rest) 804.31/217.16 , colorrestthetrick[Ite](False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 -> colorrestthetrick(xs, cs, ncs, colorednodes, rest) 804.31/217.16 , getColorListFromCN(CN(cl, n)) -> cl 804.31/217.16 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.16 -> 804.31/217.16 colorrest[Ite][True][Let][Ite](True(), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 CN(cl, n)) 804.31/217.16 , colorrest[Ite][True][Let](cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 NotPossible()) 804.31/217.16 -> 804.31/217.16 colorrest[Ite][True][Let][Ite](False(), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 NotPossible()) 804.31/217.16 , notEmpty(Cons(x, xs)) -> True() 804.31/217.16 , notEmpty(Nil()) -> False() 804.31/217.16 , revapp(Cons(x, xs), rest) -> revapp(xs, Cons(x, rest)) 804.31/217.16 , revapp(Nil(), rest) -> rest } 804.31/217.16 Obligation: 804.31/217.16 innermost runtime complexity 804.31/217.16 Answer: 804.31/217.16 YES(O(1),POLY) 804.31/217.16 804.31/217.16 We replace rewrite rules by usable rules: 804.31/217.16 804.31/217.16 Weak Usable Rules: 804.31/217.16 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.16 colorrest[Ite][True][Let](cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 Cons(x, xs), 804.31/217.16 colornode(ncs, x, colorednodes)) 804.31/217.16 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.16 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.16 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 , possible(color, Nil(), colorednodes) -> True() 804.31/217.16 , eqColor(NoColor(), b) -> False() 804.31/217.16 , eqColor(Blue(), NoColor()) -> False() 804.31/217.16 , eqColor(Blue(), Blue()) -> True() 804.31/217.16 , eqColor(Blue(), Red()) -> False() 804.31/217.16 , eqColor(Blue(), Yellow()) -> False() 804.31/217.16 , eqColor(Red(), NoColor()) -> False() 804.31/217.16 , eqColor(Red(), Blue()) -> False() 804.31/217.16 , eqColor(Red(), Red()) -> True() 804.31/217.16 , eqColor(Red(), Yellow()) -> False() 804.31/217.16 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.16 , eqColor(Yellow(), Blue()) -> False() 804.31/217.16 , eqColor(Yellow(), Red()) -> False() 804.31/217.16 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.16 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.16 CN(cs, node) 804.31/217.16 , colornode[Ite][True][Ite](False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 node, 804.31/217.16 colorednodes) 804.31/217.16 -> colornode(xs, node, colorednodes) 804.31/217.16 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.16 , !EQ(S(x), 0()) -> False() 804.31/217.16 , !EQ(0(), S(y)) -> False() 804.31/217.16 , !EQ(0(), 0()) -> True() 804.31/217.16 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.16 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.16 Cons(x, xs), 804.31/217.16 N(n, ns), 804.31/217.16 colorednodes) 804.31/217.16 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.16 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.16 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.16 , eqColorList(Nil(), Nil()) -> True() 804.31/217.16 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.16 False() 804.31/217.16 , possible[Ite][True][Ite](False(), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 -> possible(color, xs, colorednodes) 804.31/217.16 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.16 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.16 node, 804.31/217.16 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.16 , colorof(node, Nil()) -> NoColor() 804.31/217.16 , colorof[Ite][True][Ite](True(), 804.31/217.16 node, 804.31/217.16 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.16 -> x 804.31/217.16 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.16 colorof(node, xs) 804.31/217.16 , and(True(), True()) -> True() 804.31/217.16 , and(True(), False()) -> False() 804.31/217.16 , and(False(), True()) -> False() 804.31/217.16 , and(False(), False()) -> False() 804.31/217.16 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.16 -> 804.31/217.16 colorrest[Ite][True][Let][Ite](True(), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 CN(cl, n)) 804.31/217.16 , colorrest[Ite][True][Let](cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 NotPossible()) 804.31/217.16 -> 804.31/217.16 colorrest[Ite][True][Let][Ite](False(), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest, 804.31/217.16 NotPossible()) } 804.31/217.16 804.31/217.16 We are left with following problem, upon which TcT provides the 804.31/217.16 certificate YES(O(1),POLY). 804.31/217.16 804.31/217.16 Strict DPs: 804.31/217.16 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.16 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.16 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.16 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.16 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.16 Cons(x, xs), 804.31/217.16 N(n, ns), 804.31/217.16 colorednodes), 804.31/217.16 possible^#(x, ns, colorednodes)) 804.31/217.16 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.16 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.16 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.16 colorof(x, colorednodes)), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes), 804.31/217.16 colorof^#(x, colorednodes)) 804.31/217.16 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.16 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.16 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.16 node, 804.31/217.16 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.16 , colorof^#(node, Nil()) -> c_8() 804.31/217.16 , reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.16 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.16 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.16 c_11(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_12(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_13(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_14(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_15(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_16(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_17(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_18(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_19(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 c_20(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 c_21(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 c_22(eqColorList^#(cs1, cs2)) 804.31/217.16 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 c_23(eqColorList^#(cs1, cs2)) 804.31/217.16 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.16 c_24(reverse^#(colorrest(cs, 804.31/217.16 cs, 804.31/217.16 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.16 xs)), 804.31/217.16 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.16 colornode^#(cs, x, Nil())) 804.31/217.16 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.16 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.16 cs1, 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest), 804.31/217.16 eqColorList^#(cs1, ncs)) } 804.31/217.16 Weak DPs: 804.31/217.16 { possible[Ite][True][Ite]^#(False(), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.16 , colornode[Ite][True][Ite]^#(False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 node, 804.31/217.16 colorednodes) 804.31/217.16 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.16 , colorrestthetrick[Ite]^#(True(), 804.31/217.16 cs1, 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.16 , colorrestthetrick[Ite]^#(False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 rest) 804.31/217.16 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.16 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.16 c_30(colorof^#(node, xs)) } 804.31/217.16 Weak Trs: 804.31/217.16 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.16 colorrest[Ite][True][Let](cs, 804.31/217.16 ncs, 804.31/217.16 colorednodes, 804.31/217.16 Cons(x, xs), 804.31/217.16 colornode(ncs, x, colorednodes)) 804.31/217.16 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.16 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.16 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.16 color, 804.31/217.16 Cons(x, xs), 804.31/217.16 colorednodes) 804.31/217.16 , possible(color, Nil(), colorednodes) -> True() 804.31/217.16 , eqColor(NoColor(), b) -> False() 804.31/217.16 , eqColor(Blue(), NoColor()) -> False() 804.31/217.16 , eqColor(Blue(), Blue()) -> True() 804.31/217.16 , eqColor(Blue(), Red()) -> False() 804.31/217.16 , eqColor(Blue(), Yellow()) -> False() 804.31/217.16 , eqColor(Red(), NoColor()) -> False() 804.31/217.16 , eqColor(Red(), Blue()) -> False() 804.31/217.16 , eqColor(Red(), Red()) -> True() 804.31/217.16 , eqColor(Red(), Yellow()) -> False() 804.31/217.16 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.16 , eqColor(Yellow(), Blue()) -> False() 804.31/217.16 , eqColor(Yellow(), Red()) -> False() 804.31/217.16 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.16 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.16 CN(cs, node) 804.31/217.16 , colornode[Ite][True][Ite](False(), 804.31/217.16 Cons(x, xs), 804.31/217.16 node, 804.31/217.16 colorednodes) 804.31/217.16 -> colornode(xs, node, colorednodes) 804.31/217.16 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.16 , !EQ(S(x), 0()) -> False() 804.31/217.16 , !EQ(0(), S(y)) -> False() 804.31/217.16 , !EQ(0(), 0()) -> True() 804.31/217.16 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.16 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.16 Cons(x, xs), 804.31/217.16 N(n, ns), 804.31/217.16 colorednodes) 804.31/217.16 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.16 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.16 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.16 and(True(), eqColorList(cs1, cs2)) 804.31/217.16 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.16 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.17 , eqColorList(Nil(), Nil()) -> True() 804.31/217.17 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.17 False() 804.31/217.17 , possible[Ite][True][Ite](False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> possible(color, xs, colorednodes) 804.31/217.17 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.17 , colorof(node, Nil()) -> NoColor() 804.31/217.17 , colorof[Ite][True][Ite](True(), 804.31/217.17 node, 804.31/217.17 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.17 -> x 804.31/217.17 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.17 colorof(node, xs) 804.31/217.17 , and(True(), True()) -> True() 804.31/217.17 , and(True(), False()) -> False() 804.31/217.17 , and(False(), True()) -> False() 804.31/217.17 , and(False(), False()) -> False() 804.31/217.17 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](True(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 CN(cl, n)) 804.31/217.17 , colorrest[Ite][True][Let](cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](False(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) } 804.31/217.17 Obligation: 804.31/217.17 innermost runtime complexity 804.31/217.17 Answer: 804.31/217.17 YES(O(1),POLY) 804.31/217.17 804.31/217.17 We analyse the complexity of following sub-problems (R) and (S). 804.31/217.17 Problem (S) is obtained from the input problem by shifting strict 804.31/217.17 rules from (R) into the weak component: 804.31/217.17 804.31/217.17 Problem (R): 804.31/217.17 ------------ 804.31/217.17 Strict DPs: 804.31/217.17 { reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.17 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.17 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.17 c_24(reverse^#(colorrest(cs, 804.31/217.17 cs, 804.31/217.17 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.17 xs)), 804.31/217.17 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.17 colornode^#(cs, x, Nil())) } 804.31/217.17 Weak DPs: 804.31/217.17 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.17 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.17 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.17 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.17 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.17 Cons(x, xs), 804.31/217.17 N(n, ns), 804.31/217.17 colorednodes), 804.31/217.17 possible^#(x, ns, colorednodes)) 804.31/217.17 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.17 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.17 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.17 colorof(x, colorednodes)), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes), 804.31/217.17 colorof^#(x, colorednodes)) 804.31/217.17 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.17 , possible[Ite][True][Ite]^#(False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.17 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.17 , colorof^#(node, Nil()) -> c_8() 804.31/217.17 , colornode[Ite][True][Ite]^#(False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 node, 804.31/217.17 colorednodes) 804.31/217.17 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.17 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.17 c_11(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_12(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_13(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_14(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_15(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_16(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_17(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_18(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_19(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_20(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_21(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_22(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_23(eqColorList^#(cs1, cs2)) 804.31/217.17 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.17 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.17 cs1, 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest), 804.31/217.17 eqColorList^#(cs1, ncs)) 804.31/217.17 , colorrestthetrick[Ite]^#(True(), 804.31/217.17 cs1, 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest) 804.31/217.17 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.17 , colorrestthetrick[Ite]^#(False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest) 804.31/217.17 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.17 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.17 c_30(colorof^#(node, xs)) } 804.31/217.17 Weak Trs: 804.31/217.17 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.17 colorrest[Ite][True][Let](cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 Cons(x, xs), 804.31/217.17 colornode(ncs, x, colorednodes)) 804.31/217.17 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.17 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.17 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 , possible(color, Nil(), colorednodes) -> True() 804.31/217.17 , eqColor(NoColor(), b) -> False() 804.31/217.17 , eqColor(Blue(), NoColor()) -> False() 804.31/217.17 , eqColor(Blue(), Blue()) -> True() 804.31/217.17 , eqColor(Blue(), Red()) -> False() 804.31/217.17 , eqColor(Blue(), Yellow()) -> False() 804.31/217.17 , eqColor(Red(), NoColor()) -> False() 804.31/217.17 , eqColor(Red(), Blue()) -> False() 804.31/217.17 , eqColor(Red(), Red()) -> True() 804.31/217.17 , eqColor(Red(), Yellow()) -> False() 804.31/217.17 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.17 , eqColor(Yellow(), Blue()) -> False() 804.31/217.17 , eqColor(Yellow(), Red()) -> False() 804.31/217.17 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.17 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.17 CN(cs, node) 804.31/217.17 , colornode[Ite][True][Ite](False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 node, 804.31/217.17 colorednodes) 804.31/217.17 -> colornode(xs, node, colorednodes) 804.31/217.17 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.17 , !EQ(S(x), 0()) -> False() 804.31/217.17 , !EQ(0(), S(y)) -> False() 804.31/217.17 , !EQ(0(), 0()) -> True() 804.31/217.17 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.17 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.17 Cons(x, xs), 804.31/217.17 N(n, ns), 804.31/217.17 colorednodes) 804.31/217.17 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.17 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.17 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.17 , eqColorList(Nil(), Nil()) -> True() 804.31/217.17 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.17 False() 804.31/217.17 , possible[Ite][True][Ite](False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> possible(color, xs, colorednodes) 804.31/217.17 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.17 , colorof(node, Nil()) -> NoColor() 804.31/217.17 , colorof[Ite][True][Ite](True(), 804.31/217.17 node, 804.31/217.17 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.17 -> x 804.31/217.17 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.17 colorof(node, xs) 804.31/217.17 , and(True(), True()) -> True() 804.31/217.17 , and(True(), False()) -> False() 804.31/217.17 , and(False(), True()) -> False() 804.31/217.17 , and(False(), False()) -> False() 804.31/217.17 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](True(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 CN(cl, n)) 804.31/217.17 , colorrest[Ite][True][Let](cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](False(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) } 804.31/217.17 StartTerms: basic terms 804.31/217.17 Strategy: innermost 804.31/217.17 804.31/217.17 Problem (S): 804.31/217.17 ------------ 804.31/217.17 Strict DPs: 804.31/217.17 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.17 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.17 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.17 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.17 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.17 Cons(x, xs), 804.31/217.17 N(n, ns), 804.31/217.17 colorednodes), 804.31/217.17 possible^#(x, ns, colorednodes)) 804.31/217.17 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.17 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.17 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.17 colorof(x, colorednodes)), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes), 804.31/217.17 colorof^#(x, colorednodes)) 804.31/217.17 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.17 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.17 , colorof^#(node, Nil()) -> c_8() 804.31/217.17 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.17 c_11(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_12(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_13(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_14(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_15(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_16(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_17(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_18(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_19(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 c_20(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 c_21(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 c_22(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 c_23(eqColorList^#(cs1, cs2)) 804.31/217.17 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.17 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.17 cs1, 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest), 804.31/217.17 eqColorList^#(cs1, ncs)) } 804.31/217.17 Weak DPs: 804.31/217.17 { possible[Ite][True][Ite]^#(False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.17 , reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.17 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.17 , colornode[Ite][True][Ite]^#(False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 node, 804.31/217.17 colorednodes) 804.31/217.17 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.17 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.17 c_24(reverse^#(colorrest(cs, 804.31/217.17 cs, 804.31/217.17 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.17 xs)), 804.31/217.17 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.17 colornode^#(cs, x, Nil())) 804.31/217.17 , colorrestthetrick[Ite]^#(True(), 804.31/217.17 cs1, 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest) 804.31/217.17 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.17 , colorrestthetrick[Ite]^#(False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest) 804.31/217.17 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.17 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.17 c_30(colorof^#(node, xs)) } 804.31/217.17 Weak Trs: 804.31/217.17 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.17 colorrest[Ite][True][Let](cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 Cons(x, xs), 804.31/217.17 colornode(ncs, x, colorednodes)) 804.31/217.17 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.17 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.17 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 , possible(color, Nil(), colorednodes) -> True() 804.31/217.17 , eqColor(NoColor(), b) -> False() 804.31/217.17 , eqColor(Blue(), NoColor()) -> False() 804.31/217.17 , eqColor(Blue(), Blue()) -> True() 804.31/217.17 , eqColor(Blue(), Red()) -> False() 804.31/217.17 , eqColor(Blue(), Yellow()) -> False() 804.31/217.17 , eqColor(Red(), NoColor()) -> False() 804.31/217.17 , eqColor(Red(), Blue()) -> False() 804.31/217.17 , eqColor(Red(), Red()) -> True() 804.31/217.17 , eqColor(Red(), Yellow()) -> False() 804.31/217.17 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.17 , eqColor(Yellow(), Blue()) -> False() 804.31/217.17 , eqColor(Yellow(), Red()) -> False() 804.31/217.17 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.17 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.17 CN(cs, node) 804.31/217.17 , colornode[Ite][True][Ite](False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 node, 804.31/217.17 colorednodes) 804.31/217.17 -> colornode(xs, node, colorednodes) 804.31/217.17 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.17 , !EQ(S(x), 0()) -> False() 804.31/217.17 , !EQ(0(), S(y)) -> False() 804.31/217.17 , !EQ(0(), 0()) -> True() 804.31/217.17 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.17 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.17 Cons(x, xs), 804.31/217.17 N(n, ns), 804.31/217.17 colorednodes) 804.31/217.17 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.17 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.17 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.17 and(False(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.17 and(True(), eqColorList(cs1, cs2)) 804.31/217.17 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.17 , eqColorList(Nil(), Nil()) -> True() 804.31/217.17 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.17 False() 804.31/217.17 , possible[Ite][True][Ite](False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> possible(color, xs, colorednodes) 804.31/217.17 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.17 , colorof(node, Nil()) -> NoColor() 804.31/217.17 , colorof[Ite][True][Ite](True(), 804.31/217.17 node, 804.31/217.17 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.17 -> x 804.31/217.17 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.17 colorof(node, xs) 804.31/217.17 , and(True(), True()) -> True() 804.31/217.17 , and(True(), False()) -> False() 804.31/217.17 , and(False(), True()) -> False() 804.31/217.17 , and(False(), False()) -> False() 804.31/217.17 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](True(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 CN(cl, n)) 804.31/217.17 , colorrest[Ite][True][Let](cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) 804.31/217.17 -> 804.31/217.17 colorrest[Ite][True][Let][Ite](False(), 804.31/217.17 cs, 804.31/217.17 ncs, 804.31/217.17 colorednodes, 804.31/217.17 rest, 804.31/217.17 NotPossible()) } 804.31/217.17 StartTerms: basic terms 804.31/217.17 Strategy: innermost 804.31/217.17 804.31/217.17 Overall, the transformation results in the following sub-problem(s): 804.31/217.17 804.31/217.17 Generated new problems: 804.31/217.17 ----------------------- 804.31/217.17 R) Strict DPs: 804.31/217.17 { reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.17 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.17 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.17 c_24(reverse^#(colorrest(cs, 804.31/217.17 cs, 804.31/217.17 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.17 xs)), 804.31/217.17 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.17 colornode^#(cs, x, Nil())) } 804.31/217.17 Weak DPs: 804.31/217.17 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.17 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.17 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.17 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.17 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.17 Cons(x, xs), 804.31/217.17 N(n, ns), 804.31/217.17 colorednodes), 804.31/217.17 possible^#(x, ns, colorednodes)) 804.31/217.17 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.17 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.17 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.17 colorof(x, colorednodes)), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes), 804.31/217.17 colorof^#(x, colorednodes)) 804.31/217.17 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.17 , possible[Ite][True][Ite]^#(False(), 804.31/217.17 color, 804.31/217.17 Cons(x, xs), 804.31/217.17 colorednodes) 804.31/217.17 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.17 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.17 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.17 node, 804.31/217.17 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.17 , colorof^#(node, Nil()) -> c_8() 804.31/217.17 , colornode[Ite][True][Ite]^#(False(), 804.31/217.17 Cons(x, xs), 804.31/217.17 node, 804.31/217.17 colorednodes) 804.31/217.17 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.17 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.17 c_11(eqColorList^#(cs1, cs2)) 804.31/217.17 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_12(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_13(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_14(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_15(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_16(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_17(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_18(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_19(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_20(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_21(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_22(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_23(eqColorList^#(cs1, cs2)) 804.31/217.18 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.18 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest), 804.31/217.18 eqColorList^#(cs1, ncs)) 804.31/217.18 , colorrestthetrick[Ite]^#(True(), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.18 , colorrestthetrick[Ite]^#(False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.18 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.18 c_30(colorof^#(node, xs)) } 804.31/217.18 Weak Trs: 804.31/217.18 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.18 colorrest[Ite][True][Let](cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 Cons(x, xs), 804.31/217.18 colornode(ncs, x, colorednodes)) 804.31/217.18 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.18 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.18 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 , possible(color, Nil(), colorednodes) -> True() 804.31/217.18 , eqColor(NoColor(), b) -> False() 804.31/217.18 , eqColor(Blue(), NoColor()) -> False() 804.31/217.18 , eqColor(Blue(), Blue()) -> True() 804.31/217.18 , eqColor(Blue(), Red()) -> False() 804.31/217.18 , eqColor(Blue(), Yellow()) -> False() 804.31/217.18 , eqColor(Red(), NoColor()) -> False() 804.31/217.18 , eqColor(Red(), Blue()) -> False() 804.31/217.18 , eqColor(Red(), Red()) -> True() 804.31/217.18 , eqColor(Red(), Yellow()) -> False() 804.31/217.18 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.18 , eqColor(Yellow(), Blue()) -> False() 804.31/217.18 , eqColor(Yellow(), Red()) -> False() 804.31/217.18 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.18 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.18 CN(cs, node) 804.31/217.18 , colornode[Ite][True][Ite](False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 node, 804.31/217.18 colorednodes) 804.31/217.18 -> colornode(xs, node, colorednodes) 804.31/217.18 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.18 , !EQ(S(x), 0()) -> False() 804.31/217.18 , !EQ(0(), S(y)) -> False() 804.31/217.18 , !EQ(0(), 0()) -> True() 804.31/217.18 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.18 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.18 Cons(x, xs), 804.31/217.18 N(n, ns), 804.31/217.18 colorednodes) 804.31/217.18 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.18 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.18 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.18 , eqColorList(Nil(), Nil()) -> True() 804.31/217.18 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.18 False() 804.31/217.18 , possible[Ite][True][Ite](False(), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 -> possible(color, xs, colorednodes) 804.31/217.18 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.18 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.18 node, 804.31/217.18 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.18 , colorof(node, Nil()) -> NoColor() 804.31/217.18 , colorof[Ite][True][Ite](True(), 804.31/217.18 node, 804.31/217.18 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.18 -> x 804.31/217.18 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.18 colorof(node, xs) 804.31/217.18 , and(True(), True()) -> True() 804.31/217.18 , and(True(), False()) -> False() 804.31/217.18 , and(False(), True()) -> False() 804.31/217.18 , and(False(), False()) -> False() 804.31/217.18 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.18 -> 804.31/217.18 colorrest[Ite][True][Let][Ite](True(), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 CN(cl, n)) 804.31/217.18 , colorrest[Ite][True][Let](cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 NotPossible()) 804.31/217.18 -> 804.31/217.18 colorrest[Ite][True][Let][Ite](False(), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 NotPossible()) } 804.31/217.18 StartTerms: basic terms 804.31/217.18 Strategy: innermost 804.31/217.18 804.31/217.18 This problem was proven YES(O(1),O(n^1)). 804.31/217.18 804.31/217.18 S) Strict DPs: 804.31/217.18 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.18 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.18 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.18 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.18 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.18 Cons(x, xs), 804.31/217.18 N(n, ns), 804.31/217.18 colorednodes), 804.31/217.18 possible^#(x, ns, colorednodes)) 804.31/217.18 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.18 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.18 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.18 colorof(x, colorednodes)), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes), 804.31/217.18 colorof^#(x, colorednodes)) 804.31/217.18 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.18 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.18 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.18 node, 804.31/217.18 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.18 , colorof^#(node, Nil()) -> c_8() 804.31/217.18 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.18 c_11(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_12(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_13(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_14(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_15(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_16(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_17(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_18(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_19(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_20(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_21(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_22(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_23(eqColorList^#(cs1, cs2)) 804.31/217.18 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.18 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest), 804.31/217.18 eqColorList^#(cs1, ncs)) } 804.31/217.18 Weak DPs: 804.31/217.18 { possible[Ite][True][Ite]^#(False(), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.18 , reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.18 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.18 , colornode[Ite][True][Ite]^#(False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 node, 804.31/217.18 colorednodes) 804.31/217.18 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.18 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.18 c_24(reverse^#(colorrest(cs, 804.31/217.18 cs, 804.31/217.18 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.18 xs)), 804.31/217.18 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.18 colornode^#(cs, x, Nil())) 804.31/217.18 , colorrestthetrick[Ite]^#(True(), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.18 , colorrestthetrick[Ite]^#(False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.18 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.18 c_30(colorof^#(node, xs)) } 804.31/217.18 Weak Trs: 804.31/217.18 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.18 colorrest[Ite][True][Let](cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 Cons(x, xs), 804.31/217.18 colornode(ncs, x, colorednodes)) 804.31/217.18 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.18 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.18 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 , possible(color, Nil(), colorednodes) -> True() 804.31/217.18 , eqColor(NoColor(), b) -> False() 804.31/217.18 , eqColor(Blue(), NoColor()) -> False() 804.31/217.18 , eqColor(Blue(), Blue()) -> True() 804.31/217.18 , eqColor(Blue(), Red()) -> False() 804.31/217.18 , eqColor(Blue(), Yellow()) -> False() 804.31/217.18 , eqColor(Red(), NoColor()) -> False() 804.31/217.18 , eqColor(Red(), Blue()) -> False() 804.31/217.18 , eqColor(Red(), Red()) -> True() 804.31/217.18 , eqColor(Red(), Yellow()) -> False() 804.31/217.18 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.18 , eqColor(Yellow(), Blue()) -> False() 804.31/217.18 , eqColor(Yellow(), Red()) -> False() 804.31/217.18 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.18 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.18 CN(cs, node) 804.31/217.18 , colornode[Ite][True][Ite](False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 node, 804.31/217.18 colorednodes) 804.31/217.18 -> colornode(xs, node, colorednodes) 804.31/217.18 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.18 , !EQ(S(x), 0()) -> False() 804.31/217.18 , !EQ(0(), S(y)) -> False() 804.31/217.18 , !EQ(0(), 0()) -> True() 804.31/217.18 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.18 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.18 Cons(x, xs), 804.31/217.18 N(n, ns), 804.31/217.18 colorednodes) 804.31/217.18 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.18 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.18 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 and(False(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 and(True(), eqColorList(cs1, cs2)) 804.31/217.18 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.18 , eqColorList(Nil(), Nil()) -> True() 804.31/217.18 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.18 False() 804.31/217.18 , possible[Ite][True][Ite](False(), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 -> possible(color, xs, colorednodes) 804.31/217.18 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.18 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.18 node, 804.31/217.18 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.18 , colorof(node, Nil()) -> NoColor() 804.31/217.18 , colorof[Ite][True][Ite](True(), 804.31/217.18 node, 804.31/217.18 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.18 -> x 804.31/217.18 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.18 colorof(node, xs) 804.31/217.18 , and(True(), True()) -> True() 804.31/217.18 , and(True(), False()) -> False() 804.31/217.18 , and(False(), True()) -> False() 804.31/217.18 , and(False(), False()) -> False() 804.31/217.18 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.18 -> 804.31/217.18 colorrest[Ite][True][Let][Ite](True(), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 CN(cl, n)) 804.31/217.18 , colorrest[Ite][True][Let](cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 NotPossible()) 804.31/217.18 -> 804.31/217.18 colorrest[Ite][True][Let][Ite](False(), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest, 804.31/217.18 NotPossible()) } 804.31/217.18 StartTerms: basic terms 804.31/217.18 Strategy: innermost 804.31/217.18 804.31/217.18 This problem was proven YES(O(1),POLY). 804.31/217.18 804.31/217.18 804.31/217.18 Proofs for generated problems: 804.31/217.18 ------------------------------ 804.31/217.18 R) We are left with following problem, upon which TcT provides the 804.31/217.18 certificate YES(O(1),O(n^1)). 804.31/217.18 804.31/217.18 Strict DPs: 804.31/217.18 { reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.18 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.18 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.18 c_24(reverse^#(colorrest(cs, 804.31/217.18 cs, 804.31/217.18 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.18 xs)), 804.31/217.18 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.18 colornode^#(cs, x, Nil())) } 804.31/217.18 Weak DPs: 804.31/217.18 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.18 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.18 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.18 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.18 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.18 Cons(x, xs), 804.31/217.18 N(n, ns), 804.31/217.18 colorednodes), 804.31/217.18 possible^#(x, ns, colorednodes)) 804.31/217.18 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.18 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.18 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.18 colorof(x, colorednodes)), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes), 804.31/217.18 colorof^#(x, colorednodes)) 804.31/217.18 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.18 , possible[Ite][True][Ite]^#(False(), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.18 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.18 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.18 node, 804.31/217.18 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.18 , colorof^#(node, Nil()) -> c_8() 804.31/217.18 , colornode[Ite][True][Ite]^#(False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 node, 804.31/217.18 colorednodes) 804.31/217.18 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.18 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.18 c_11(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_12(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_13(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_14(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_15(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_16(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_17(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_18(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_19(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.18 c_20(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.18 c_21(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.18 c_22(eqColorList^#(cs1, cs2)) 804.31/217.18 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.18 c_23(eqColorList^#(cs1, cs2)) 804.31/217.18 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.18 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest), 804.31/217.18 eqColorList^#(cs1, ncs)) 804.31/217.18 , colorrestthetrick[Ite]^#(True(), 804.31/217.18 cs1, 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.18 , colorrestthetrick[Ite]^#(False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 rest) 804.31/217.18 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.18 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.18 c_30(colorof^#(node, xs)) } 804.31/217.18 Weak Trs: 804.31/217.18 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.18 colorrest[Ite][True][Let](cs, 804.31/217.18 ncs, 804.31/217.18 colorednodes, 804.31/217.18 Cons(x, xs), 804.31/217.18 colornode(ncs, x, colorednodes)) 804.31/217.18 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.18 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.18 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.18 color, 804.31/217.18 Cons(x, xs), 804.31/217.18 colorednodes) 804.31/217.18 , possible(color, Nil(), colorednodes) -> True() 804.31/217.18 , eqColor(NoColor(), b) -> False() 804.31/217.18 , eqColor(Blue(), NoColor()) -> False() 804.31/217.18 , eqColor(Blue(), Blue()) -> True() 804.31/217.18 , eqColor(Blue(), Red()) -> False() 804.31/217.18 , eqColor(Blue(), Yellow()) -> False() 804.31/217.18 , eqColor(Red(), NoColor()) -> False() 804.31/217.18 , eqColor(Red(), Blue()) -> False() 804.31/217.18 , eqColor(Red(), Red()) -> True() 804.31/217.18 , eqColor(Red(), Yellow()) -> False() 804.31/217.18 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.18 , eqColor(Yellow(), Blue()) -> False() 804.31/217.18 , eqColor(Yellow(), Red()) -> False() 804.31/217.18 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.18 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.18 CN(cs, node) 804.31/217.18 , colornode[Ite][True][Ite](False(), 804.31/217.18 Cons(x, xs), 804.31/217.18 node, 804.31/217.18 colorednodes) 804.31/217.18 -> colornode(xs, node, colorednodes) 804.31/217.18 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.18 , !EQ(S(x), 0()) -> False() 804.31/217.18 , !EQ(0(), S(y)) -> False() 804.31/217.18 , !EQ(0(), 0()) -> True() 804.31/217.18 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.18 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.18 Cons(x, xs), 804.31/217.18 N(n, ns), 804.31/217.18 colorednodes) 804.31/217.19 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.19 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.19 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.19 , eqColorList(Nil(), Nil()) -> True() 804.31/217.19 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.19 False() 804.31/217.19 , possible[Ite][True][Ite](False(), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 -> possible(color, xs, colorednodes) 804.31/217.19 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.19 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.19 node, 804.31/217.19 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.19 , colorof(node, Nil()) -> NoColor() 804.31/217.19 , colorof[Ite][True][Ite](True(), 804.31/217.19 node, 804.31/217.19 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.19 -> x 804.31/217.19 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.19 colorof(node, xs) 804.31/217.19 , and(True(), True()) -> True() 804.31/217.19 , and(True(), False()) -> False() 804.31/217.19 , and(False(), True()) -> False() 804.31/217.19 , and(False(), False()) -> False() 804.31/217.19 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](True(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 CN(cl, n)) 804.31/217.19 , colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](False(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) } 804.31/217.19 Obligation: 804.31/217.19 innermost runtime complexity 804.31/217.19 Answer: 804.31/217.19 YES(O(1),O(n^1)) 804.31/217.19 804.31/217.19 The following weak DPs constitute a sub-graph of the DG that is 804.31/217.19 closed under successors. The DPs are removed. 804.31/217.19 804.31/217.19 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.19 c_1(colornode^#(ncs, x, colorednodes)) 804.31/217.19 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.31/217.19 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.19 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.31/217.19 Cons(x, xs), 804.31/217.19 N(n, ns), 804.31/217.19 colorednodes), 804.31/217.19 possible^#(x, ns, colorednodes)) 804.31/217.19 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.31/217.19 , possible^#(color, Cons(x, xs), colorednodes) -> 804.31/217.19 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.31/217.19 colorof(x, colorednodes)), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes), 804.31/217.19 colorof^#(x, colorednodes)) 804.31/217.19 , possible^#(color, Nil(), colorednodes) -> c_6() 804.31/217.19 , possible[Ite][True][Ite]^#(False(), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 -> c_26(possible^#(color, xs, colorednodes)) 804.31/217.19 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.19 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.31/217.19 node, 804.31/217.19 Cons(CN(cl, N(name, adjs)), xs))) 804.31/217.19 , colorof^#(node, Nil()) -> c_8() 804.31/217.19 , colornode[Ite][True][Ite]^#(False(), 804.31/217.19 Cons(x, xs), 804.31/217.19 node, 804.31/217.19 colorednodes) 804.31/217.19 -> c_27(colornode^#(xs, node, colorednodes)) 804.31/217.19 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.19 c_11(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 c_12(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 c_13(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 c_14(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 c_15(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 c_16(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 c_17(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 c_18(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 c_19(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 c_20(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 c_21(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 c_22(eqColorList^#(cs1, cs2)) 804.31/217.19 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 c_23(eqColorList^#(cs1, cs2)) 804.31/217.19 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.31/217.19 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.31/217.19 cs1, 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest), 804.31/217.19 eqColorList^#(cs1, ncs)) 804.31/217.19 , colorrestthetrick[Ite]^#(True(), 804.31/217.19 cs1, 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest) 804.31/217.19 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.31/217.19 , colorrestthetrick[Ite]^#(False(), 804.31/217.19 Cons(x, xs), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest) 804.31/217.19 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.31/217.19 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.31/217.19 c_30(colorof^#(node, xs)) } 804.31/217.19 804.31/217.19 We are left with following problem, upon which TcT provides the 804.31/217.19 certificate YES(O(1),O(n^1)). 804.31/217.19 804.31/217.19 Strict DPs: 804.31/217.19 { reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.31/217.19 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.31/217.19 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.19 c_24(reverse^#(colorrest(cs, 804.31/217.19 cs, 804.31/217.19 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.19 xs)), 804.31/217.19 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.19 colornode^#(cs, x, Nil())) } 804.31/217.19 Weak Trs: 804.31/217.19 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.19 colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 Cons(x, xs), 804.31/217.19 colornode(ncs, x, colorednodes)) 804.31/217.19 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.19 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.19 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 , possible(color, Nil(), colorednodes) -> True() 804.31/217.19 , eqColor(NoColor(), b) -> False() 804.31/217.19 , eqColor(Blue(), NoColor()) -> False() 804.31/217.19 , eqColor(Blue(), Blue()) -> True() 804.31/217.19 , eqColor(Blue(), Red()) -> False() 804.31/217.19 , eqColor(Blue(), Yellow()) -> False() 804.31/217.19 , eqColor(Red(), NoColor()) -> False() 804.31/217.19 , eqColor(Red(), Blue()) -> False() 804.31/217.19 , eqColor(Red(), Red()) -> True() 804.31/217.19 , eqColor(Red(), Yellow()) -> False() 804.31/217.19 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.19 , eqColor(Yellow(), Blue()) -> False() 804.31/217.19 , eqColor(Yellow(), Red()) -> False() 804.31/217.19 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.19 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.19 CN(cs, node) 804.31/217.19 , colornode[Ite][True][Ite](False(), 804.31/217.19 Cons(x, xs), 804.31/217.19 node, 804.31/217.19 colorednodes) 804.31/217.19 -> colornode(xs, node, colorednodes) 804.31/217.19 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.19 , !EQ(S(x), 0()) -> False() 804.31/217.19 , !EQ(0(), S(y)) -> False() 804.31/217.19 , !EQ(0(), 0()) -> True() 804.31/217.19 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.19 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.19 Cons(x, xs), 804.31/217.19 N(n, ns), 804.31/217.19 colorednodes) 804.31/217.19 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.19 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.19 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.19 , eqColorList(Nil(), Nil()) -> True() 804.31/217.19 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.19 False() 804.31/217.19 , possible[Ite][True][Ite](False(), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 -> possible(color, xs, colorednodes) 804.31/217.19 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.19 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.19 node, 804.31/217.19 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.19 , colorof(node, Nil()) -> NoColor() 804.31/217.19 , colorof[Ite][True][Ite](True(), 804.31/217.19 node, 804.31/217.19 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.19 -> x 804.31/217.19 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.19 colorof(node, xs) 804.31/217.19 , and(True(), True()) -> True() 804.31/217.19 , and(True(), False()) -> False() 804.31/217.19 , and(False(), True()) -> False() 804.31/217.19 , and(False(), False()) -> False() 804.31/217.19 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](True(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 CN(cl, n)) 804.31/217.19 , colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](False(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) } 804.31/217.19 Obligation: 804.31/217.19 innermost runtime complexity 804.31/217.19 Answer: 804.31/217.19 YES(O(1),O(n^1)) 804.31/217.19 804.31/217.19 Due to missing edges in the dependency-graph, the right-hand sides 804.31/217.19 of following rules could be simplified: 804.31/217.19 804.31/217.19 { graphcolour^#(Cons(x, xs), cs) -> 804.31/217.19 c_24(reverse^#(colorrest(cs, 804.31/217.19 cs, 804.31/217.19 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.19 xs)), 804.31/217.19 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.31/217.19 colornode^#(cs, x, Nil())) } 804.31/217.19 804.31/217.19 We are left with following problem, upon which TcT provides the 804.31/217.19 certificate YES(O(1),O(n^1)). 804.31/217.19 804.31/217.19 Strict DPs: 804.31/217.19 { reverse^#(xs) -> c_1(revapp^#(xs, Nil())) 804.31/217.19 , revapp^#(Cons(x, xs), rest) -> c_2(revapp^#(xs, Cons(x, rest))) 804.31/217.19 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.19 c_3(reverse^#(colorrest(cs, 804.31/217.19 cs, 804.31/217.19 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.19 xs))) } 804.31/217.19 Weak Trs: 804.31/217.19 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.19 colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 Cons(x, xs), 804.31/217.19 colornode(ncs, x, colorednodes)) 804.31/217.19 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.19 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.19 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 , possible(color, Nil(), colorednodes) -> True() 804.31/217.19 , eqColor(NoColor(), b) -> False() 804.31/217.19 , eqColor(Blue(), NoColor()) -> False() 804.31/217.19 , eqColor(Blue(), Blue()) -> True() 804.31/217.19 , eqColor(Blue(), Red()) -> False() 804.31/217.19 , eqColor(Blue(), Yellow()) -> False() 804.31/217.19 , eqColor(Red(), NoColor()) -> False() 804.31/217.19 , eqColor(Red(), Blue()) -> False() 804.31/217.19 , eqColor(Red(), Red()) -> True() 804.31/217.19 , eqColor(Red(), Yellow()) -> False() 804.31/217.19 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.19 , eqColor(Yellow(), Blue()) -> False() 804.31/217.19 , eqColor(Yellow(), Red()) -> False() 804.31/217.19 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.19 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.19 CN(cs, node) 804.31/217.19 , colornode[Ite][True][Ite](False(), 804.31/217.19 Cons(x, xs), 804.31/217.19 node, 804.31/217.19 colorednodes) 804.31/217.19 -> colornode(xs, node, colorednodes) 804.31/217.19 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.19 , !EQ(S(x), 0()) -> False() 804.31/217.19 , !EQ(0(), S(y)) -> False() 804.31/217.19 , !EQ(0(), 0()) -> True() 804.31/217.19 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.19 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.19 Cons(x, xs), 804.31/217.19 N(n, ns), 804.31/217.19 colorednodes) 804.31/217.19 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.19 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.31/217.19 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.31/217.19 and(False(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.31/217.19 and(True(), eqColorList(cs1, cs2)) 804.31/217.19 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.31/217.19 , eqColorList(Nil(), Nil()) -> True() 804.31/217.19 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.19 False() 804.31/217.19 , possible[Ite][True][Ite](False(), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 -> possible(color, xs, colorednodes) 804.31/217.19 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.19 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.19 node, 804.31/217.19 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.19 , colorof(node, Nil()) -> NoColor() 804.31/217.19 , colorof[Ite][True][Ite](True(), 804.31/217.19 node, 804.31/217.19 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.19 -> x 804.31/217.19 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.19 colorof(node, xs) 804.31/217.19 , and(True(), True()) -> True() 804.31/217.19 , and(True(), False()) -> False() 804.31/217.19 , and(False(), True()) -> False() 804.31/217.19 , and(False(), False()) -> False() 804.31/217.19 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](True(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 CN(cl, n)) 804.31/217.19 , colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](False(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) } 804.31/217.19 Obligation: 804.31/217.19 innermost runtime complexity 804.31/217.19 Answer: 804.31/217.19 YES(O(1),O(n^1)) 804.31/217.19 804.31/217.19 We replace rewrite rules by usable rules: 804.31/217.19 804.31/217.19 Weak Usable Rules: 804.31/217.19 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.19 colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 Cons(x, xs), 804.31/217.19 colornode(ncs, x, colorednodes)) 804.31/217.19 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.31/217.19 , possible(color, Cons(x, xs), colorednodes) -> 804.31/217.19 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 , possible(color, Nil(), colorednodes) -> True() 804.31/217.19 , eqColor(NoColor(), b) -> False() 804.31/217.19 , eqColor(Blue(), NoColor()) -> False() 804.31/217.19 , eqColor(Blue(), Blue()) -> True() 804.31/217.19 , eqColor(Blue(), Red()) -> False() 804.31/217.19 , eqColor(Blue(), Yellow()) -> False() 804.31/217.19 , eqColor(Red(), NoColor()) -> False() 804.31/217.19 , eqColor(Red(), Blue()) -> False() 804.31/217.19 , eqColor(Red(), Red()) -> True() 804.31/217.19 , eqColor(Red(), Yellow()) -> False() 804.31/217.19 , eqColor(Yellow(), NoColor()) -> False() 804.31/217.19 , eqColor(Yellow(), Blue()) -> False() 804.31/217.19 , eqColor(Yellow(), Red()) -> False() 804.31/217.19 , eqColor(Yellow(), Yellow()) -> True() 804.31/217.19 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.31/217.19 CN(cs, node) 804.31/217.19 , colornode[Ite][True][Ite](False(), 804.31/217.19 Cons(x, xs), 804.31/217.19 node, 804.31/217.19 colorednodes) 804.31/217.19 -> colornode(xs, node, colorednodes) 804.31/217.19 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.31/217.19 , !EQ(S(x), 0()) -> False() 804.31/217.19 , !EQ(0(), S(y)) -> False() 804.31/217.19 , !EQ(0(), 0()) -> True() 804.31/217.19 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.31/217.19 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.31/217.19 Cons(x, xs), 804.31/217.19 N(n, ns), 804.31/217.19 colorednodes) 804.31/217.19 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.31/217.19 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.31/217.19 False() 804.31/217.19 , possible[Ite][True][Ite](False(), 804.31/217.19 color, 804.31/217.19 Cons(x, xs), 804.31/217.19 colorednodes) 804.31/217.19 -> possible(color, xs, colorednodes) 804.31/217.19 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.31/217.19 colorof[Ite][True][Ite](!EQ(name, node), 804.31/217.19 node, 804.31/217.19 Cons(CN(cl, N(name, adjs)), xs)) 804.31/217.19 , colorof(node, Nil()) -> NoColor() 804.31/217.19 , colorof[Ite][True][Ite](True(), 804.31/217.19 node, 804.31/217.19 Cons(CN(Cons(x, xs), n), xs')) 804.31/217.19 -> x 804.31/217.19 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.31/217.19 colorof(node, xs) 804.31/217.19 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](True(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 CN(cl, n)) 804.31/217.19 , colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) 804.31/217.19 -> 804.31/217.19 colorrest[Ite][True][Let][Ite](False(), 804.31/217.19 cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 rest, 804.31/217.19 NotPossible()) } 804.31/217.19 804.31/217.19 We are left with following problem, upon which TcT provides the 804.31/217.19 certificate YES(O(1),O(n^1)). 804.31/217.19 804.31/217.19 Strict DPs: 804.31/217.19 { reverse^#(xs) -> c_1(revapp^#(xs, Nil())) 804.31/217.19 , revapp^#(Cons(x, xs), rest) -> c_2(revapp^#(xs, Cons(x, rest))) 804.31/217.19 , graphcolour^#(Cons(x, xs), cs) -> 804.31/217.19 c_3(reverse^#(colorrest(cs, 804.31/217.19 cs, 804.31/217.19 Cons(colornode(cs, x, Nil()), Nil()), 804.31/217.19 xs))) } 804.31/217.19 Weak Trs: 804.31/217.19 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.31/217.19 colorrest[Ite][True][Let](cs, 804.31/217.19 ncs, 804.31/217.19 colorednodes, 804.31/217.19 Cons(x, xs), 804.31/217.19 colornode(ncs, x, colorednodes)) 804.55/217.20 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.20 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.20 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes) 804.55/217.20 , possible(color, Nil(), colorednodes) -> True() 804.55/217.20 , eqColor(NoColor(), b) -> False() 804.55/217.20 , eqColor(Blue(), NoColor()) -> False() 804.55/217.20 , eqColor(Blue(), Blue()) -> True() 804.55/217.20 , eqColor(Blue(), Red()) -> False() 804.55/217.20 , eqColor(Blue(), Yellow()) -> False() 804.55/217.20 , eqColor(Red(), NoColor()) -> False() 804.55/217.20 , eqColor(Red(), Blue()) -> False() 804.55/217.20 , eqColor(Red(), Red()) -> True() 804.55/217.20 , eqColor(Red(), Yellow()) -> False() 804.55/217.20 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.20 , eqColor(Yellow(), Blue()) -> False() 804.55/217.20 , eqColor(Yellow(), Red()) -> False() 804.55/217.20 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.20 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.20 CN(cs, node) 804.55/217.20 , colornode[Ite][True][Ite](False(), 804.55/217.20 Cons(x, xs), 804.55/217.20 node, 804.55/217.20 colorednodes) 804.55/217.20 -> colornode(xs, node, colorednodes) 804.55/217.20 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.20 , !EQ(S(x), 0()) -> False() 804.55/217.20 , !EQ(0(), S(y)) -> False() 804.55/217.20 , !EQ(0(), 0()) -> True() 804.55/217.20 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.20 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.20 Cons(x, xs), 804.55/217.20 N(n, ns), 804.55/217.20 colorednodes) 804.55/217.20 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.20 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.20 False() 804.55/217.20 , possible[Ite][True][Ite](False(), 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes) 804.55/217.20 -> possible(color, xs, colorednodes) 804.55/217.20 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.20 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.20 node, 804.55/217.20 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.20 , colorof(node, Nil()) -> NoColor() 804.55/217.20 , colorof[Ite][True][Ite](True(), 804.55/217.20 node, 804.55/217.20 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.20 -> x 804.55/217.20 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.20 colorof(node, xs) 804.55/217.20 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.20 -> 804.55/217.20 colorrest[Ite][True][Let][Ite](True(), 804.55/217.20 cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 CN(cl, n)) 804.55/217.20 , colorrest[Ite][True][Let](cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 NotPossible()) 804.55/217.20 -> 804.55/217.20 colorrest[Ite][True][Let][Ite](False(), 804.55/217.20 cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 NotPossible()) } 804.55/217.20 Obligation: 804.55/217.20 innermost runtime complexity 804.55/217.20 Answer: 804.55/217.20 YES(O(1),O(n^1)) 804.55/217.20 804.55/217.20 We use the processor 'matrix interpretation of dimension 1' to 804.55/217.20 orient following rules strictly. 804.55/217.20 804.55/217.20 DPs: 804.55/217.20 { 2: revapp^#(Cons(x, xs), rest) -> 804.55/217.20 c_2(revapp^#(xs, Cons(x, rest))) 804.55/217.20 , 3: graphcolour^#(Cons(x, xs), cs) -> 804.55/217.20 c_3(reverse^#(colorrest(cs, 804.55/217.20 cs, 804.55/217.20 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.20 xs))) } 804.55/217.20 804.55/217.20 Sub-proof: 804.55/217.20 ---------- 804.55/217.20 The following argument positions are usable: 804.55/217.20 Uargs(c_1) = {1}, Uargs(c_2) = {1}, Uargs(c_3) = {1} 804.55/217.20 804.55/217.20 TcT has computed the following constructor-based matrix 804.55/217.20 interpretation satisfying not(EDA). 804.55/217.20 804.55/217.20 [colorrest](x1, x2, x3, x4) = [1] x3 + [0] 804.55/217.20 804.55/217.20 [True] = [0] 804.55/217.20 804.55/217.20 [NoColor] = [0] 804.55/217.20 804.55/217.20 [possible](x1, x2, x3) = [0] 804.55/217.20 804.55/217.20 [eqColor](x1, x2) = [0] 804.55/217.20 804.55/217.20 [colorrest[Ite][True][Let][Ite]](x1, x2, x3, x4, x5, x6) = [1] x4 + [0] 804.55/217.20 804.55/217.20 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.55/217.20 804.55/217.20 [CN](x1, x2) = [0] 804.55/217.20 804.55/217.20 [!EQ](x1, x2) = [0] 804.55/217.20 804.55/217.20 [Blue] = [0] 804.55/217.20 804.55/217.20 [Cons](x1, x2) = [1] x2 + [2] 804.55/217.20 804.55/217.20 [colornode](x1, x2, x3) = [0] 804.55/217.20 804.55/217.20 [NotPossible] = [0] 804.55/217.20 804.55/217.20 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.55/217.20 804.55/217.20 [False] = [0] 804.55/217.20 804.55/217.20 [Red] = [0] 804.55/217.20 804.55/217.20 [colorof](x1, x2) = [0] 804.55/217.20 804.55/217.20 [N](x1, x2) = [0] 804.55/217.20 804.55/217.20 [Nil] = [0] 804.55/217.20 804.55/217.20 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.55/217.20 804.55/217.20 [Yellow] = [0] 804.55/217.20 804.55/217.20 [colorrest[Ite][True][Let]](x1, x2, x3, x4, x5) = [1] x3 + [0] 804.55/217.20 804.55/217.20 [S](x1) = [1] x1 + [0] 804.55/217.20 804.55/217.20 [0] = [0] 804.55/217.20 804.55/217.20 [reverse^#](x1) = [4] x1 + [0] 804.55/217.20 804.55/217.20 [revapp^#](x1, x2) = [4] x1 + [0] 804.55/217.20 804.55/217.20 [graphcolour^#](x1, x2) = [4] x1 + [7] x2 + [7] 804.55/217.20 804.55/217.20 [c_1](x1) = [1] x1 + [0] 804.55/217.20 804.55/217.20 [c_2](x1) = [1] x1 + [1] 804.55/217.20 804.55/217.20 [c_3](x1) = [1] x1 + [3] 804.55/217.20 804.55/217.20 The order satisfies the following ordering constraints: 804.55/217.20 804.55/217.20 [colorrest(cs, ncs, colorednodes, Cons(x, xs))] = [1] colorednodes + [0] 804.55/217.20 >= [1] colorednodes + [0] 804.55/217.20 = [colorrest[Ite][True][Let](cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 Cons(x, xs), 804.55/217.20 colornode(ncs, x, colorednodes))] 804.55/217.20 804.55/217.20 [colorrest(cs, ncs, colorednodes, Nil())] = [1] colorednodes + [0] 804.55/217.20 >= [1] colorednodes + [0] 804.55/217.20 = [colorednodes] 804.55/217.20 804.55/217.20 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.55/217.20 ? [3] color + [3] colorednodes + [0] 804.55/217.20 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes)] 804.55/217.20 804.55/217.20 [possible(color, Nil(), colorednodes)] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [True()] 804.55/217.20 804.55/217.20 [eqColor(NoColor(), b)] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Blue(), NoColor())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Blue(), Blue())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [True()] 804.55/217.20 804.55/217.20 [eqColor(Blue(), Red())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Blue(), Yellow())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Red(), NoColor())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Red(), Blue())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Red(), Red())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [True()] 804.55/217.20 804.55/217.20 [eqColor(Red(), Yellow())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Yellow(), NoColor())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Yellow(), Blue())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Yellow(), Red())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [eqColor(Yellow(), Yellow())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [True()] 804.55/217.20 804.55/217.20 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.55/217.20 >= [0] 804.55/217.20 = [CN(cs, node)] 804.55/217.20 804.55/217.20 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.55/217.20 Cons(x, xs), 804.55/217.20 node, 804.55/217.20 colorednodes)] 804.55/217.20 >= [0] 804.55/217.20 = [colornode(xs, node, colorednodes)] 804.55/217.20 804.55/217.20 [!EQ(S(x), S(y))] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [!EQ(x, y)] 804.55/217.20 804.55/217.20 [!EQ(S(x), 0())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [!EQ(0(), S(y))] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [!EQ(0(), 0())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [True()] 804.55/217.20 804.55/217.20 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.55/217.20 ? [3] colorednodes + [0] 804.55/217.20 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.20 Cons(x, xs), 804.55/217.20 N(n, ns), 804.55/217.20 colorednodes)] 804.55/217.20 804.55/217.20 [colornode(Nil(), node, colorednodes)] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [NotPossible()] 804.55/217.20 804.55/217.20 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.55/217.20 >= [0] 804.55/217.20 = [False()] 804.55/217.20 804.55/217.20 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes)] 804.55/217.20 >= [0] 804.55/217.20 = [possible(color, xs, colorednodes)] 804.55/217.20 804.55/217.20 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.55/217.20 ? [3] node + [0] 804.55/217.20 = [colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.20 node, 804.55/217.20 Cons(CN(cl, N(name, adjs)), xs))] 804.55/217.20 804.55/217.20 [colorof(node, Nil())] = [0] 804.55/217.20 >= [0] 804.55/217.20 = [NoColor()] 804.55/217.20 804.55/217.20 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.55/217.20 node, 804.55/217.20 Cons(CN(Cons(x, xs), n), xs'))] 804.55/217.20 ? [1] x + [0] 804.55/217.20 = [x] 804.55/217.20 804.55/217.20 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.55/217.20 >= [0] 804.55/217.20 = [colorof(node, xs)] 804.55/217.20 804.55/217.20 [colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n))] = [1] colorednodes + [0] 804.55/217.20 >= [1] colorednodes + [0] 804.55/217.20 = [colorrest[Ite][True][Let][Ite](True(), 804.55/217.20 cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 CN(cl, n))] 804.55/217.20 804.55/217.20 [colorrest[Ite][True][Let](cs, = [1] colorednodes + [0] 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 NotPossible())] 804.55/217.20 >= [1] colorednodes + [0] 804.55/217.20 = [colorrest[Ite][True][Let][Ite](False(), 804.55/217.20 cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 NotPossible())] 804.55/217.20 804.55/217.20 [reverse^#(xs)] = [4] xs + [0] 804.55/217.20 >= [4] xs + [0] 804.55/217.20 = [c_1(revapp^#(xs, Nil()))] 804.55/217.20 804.55/217.20 [revapp^#(Cons(x, xs), rest)] = [4] xs + [8] 804.55/217.20 > [4] xs + [1] 804.55/217.20 = [c_2(revapp^#(xs, Cons(x, rest)))] 804.55/217.20 804.55/217.20 [graphcolour^#(Cons(x, xs), cs)] = [4] xs + [7] cs + [15] 804.55/217.20 > [11] 804.55/217.20 = [c_3(reverse^#(colorrest(cs, 804.55/217.20 cs, 804.55/217.20 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.20 xs)))] 804.55/217.20 804.55/217.20 804.55/217.20 We return to the main proof. Consider the set of all dependency 804.55/217.20 pairs 804.55/217.20 804.55/217.20 : 804.55/217.20 { 1: reverse^#(xs) -> c_1(revapp^#(xs, Nil())) 804.55/217.20 , 2: revapp^#(Cons(x, xs), rest) -> 804.55/217.20 c_2(revapp^#(xs, Cons(x, rest))) 804.55/217.20 , 3: graphcolour^#(Cons(x, xs), cs) -> 804.55/217.20 c_3(reverse^#(colorrest(cs, 804.55/217.20 cs, 804.55/217.20 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.20 xs))) } 804.55/217.20 804.55/217.20 Processor 'matrix interpretation of dimension 1' induces the 804.55/217.20 complexity certificate YES(?,O(n^1)) on application of dependency 804.55/217.20 pairs {2,3}. These cover all (indirect) predecessors of dependency 804.55/217.20 pairs {1,2,3}, their number of application is equally bounded. The 804.55/217.20 dependency pairs are shifted into the weak component. 804.55/217.20 804.55/217.20 We are left with following problem, upon which TcT provides the 804.55/217.20 certificate YES(O(1),O(1)). 804.55/217.20 804.55/217.20 Weak DPs: 804.55/217.20 { reverse^#(xs) -> c_1(revapp^#(xs, Nil())) 804.55/217.20 , revapp^#(Cons(x, xs), rest) -> c_2(revapp^#(xs, Cons(x, rest))) 804.55/217.20 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.20 c_3(reverse^#(colorrest(cs, 804.55/217.20 cs, 804.55/217.20 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.20 xs))) } 804.55/217.20 Weak Trs: 804.55/217.20 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.20 colorrest[Ite][True][Let](cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 Cons(x, xs), 804.55/217.20 colornode(ncs, x, colorednodes)) 804.55/217.20 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.20 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.20 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes) 804.55/217.20 , possible(color, Nil(), colorednodes) -> True() 804.55/217.20 , eqColor(NoColor(), b) -> False() 804.55/217.20 , eqColor(Blue(), NoColor()) -> False() 804.55/217.20 , eqColor(Blue(), Blue()) -> True() 804.55/217.20 , eqColor(Blue(), Red()) -> False() 804.55/217.20 , eqColor(Blue(), Yellow()) -> False() 804.55/217.20 , eqColor(Red(), NoColor()) -> False() 804.55/217.20 , eqColor(Red(), Blue()) -> False() 804.55/217.20 , eqColor(Red(), Red()) -> True() 804.55/217.20 , eqColor(Red(), Yellow()) -> False() 804.55/217.20 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.20 , eqColor(Yellow(), Blue()) -> False() 804.55/217.20 , eqColor(Yellow(), Red()) -> False() 804.55/217.20 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.20 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.20 CN(cs, node) 804.55/217.20 , colornode[Ite][True][Ite](False(), 804.55/217.20 Cons(x, xs), 804.55/217.20 node, 804.55/217.20 colorednodes) 804.55/217.20 -> colornode(xs, node, colorednodes) 804.55/217.20 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.20 , !EQ(S(x), 0()) -> False() 804.55/217.20 , !EQ(0(), S(y)) -> False() 804.55/217.20 , !EQ(0(), 0()) -> True() 804.55/217.20 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.20 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.20 Cons(x, xs), 804.55/217.20 N(n, ns), 804.55/217.20 colorednodes) 804.55/217.20 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.20 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.20 False() 804.55/217.20 , possible[Ite][True][Ite](False(), 804.55/217.20 color, 804.55/217.20 Cons(x, xs), 804.55/217.20 colorednodes) 804.55/217.20 -> possible(color, xs, colorednodes) 804.55/217.20 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.20 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.20 node, 804.55/217.20 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.20 , colorof(node, Nil()) -> NoColor() 804.55/217.20 , colorof[Ite][True][Ite](True(), 804.55/217.20 node, 804.55/217.20 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.20 -> x 804.55/217.20 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.20 colorof(node, xs) 804.55/217.20 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.20 -> 804.55/217.20 colorrest[Ite][True][Let][Ite](True(), 804.55/217.20 cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 CN(cl, n)) 804.55/217.20 , colorrest[Ite][True][Let](cs, 804.55/217.20 ncs, 804.55/217.20 colorednodes, 804.55/217.20 rest, 804.55/217.20 NotPossible()) 804.55/217.20 -> 804.55/217.20 colorrest[Ite][True][Let][Ite](False(), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 NotPossible()) } 804.55/217.21 Obligation: 804.55/217.21 innermost runtime complexity 804.55/217.21 Answer: 804.55/217.21 YES(O(1),O(1)) 804.55/217.21 804.55/217.21 The following weak DPs constitute a sub-graph of the DG that is 804.55/217.21 closed under successors. The DPs are removed. 804.55/217.21 804.55/217.21 { reverse^#(xs) -> c_1(revapp^#(xs, Nil())) 804.55/217.21 , revapp^#(Cons(x, xs), rest) -> c_2(revapp^#(xs, Cons(x, rest))) 804.55/217.21 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.21 c_3(reverse^#(colorrest(cs, 804.55/217.21 cs, 804.55/217.21 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.21 xs))) } 804.55/217.21 804.55/217.21 We are left with following problem, upon which TcT provides the 804.55/217.21 certificate YES(O(1),O(1)). 804.55/217.21 804.55/217.21 Weak Trs: 804.55/217.21 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.21 colorrest[Ite][True][Let](cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 Cons(x, xs), 804.55/217.21 colornode(ncs, x, colorednodes)) 804.55/217.21 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.21 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.21 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 , possible(color, Nil(), colorednodes) -> True() 804.55/217.21 , eqColor(NoColor(), b) -> False() 804.55/217.21 , eqColor(Blue(), NoColor()) -> False() 804.55/217.21 , eqColor(Blue(), Blue()) -> True() 804.55/217.21 , eqColor(Blue(), Red()) -> False() 804.55/217.21 , eqColor(Blue(), Yellow()) -> False() 804.55/217.21 , eqColor(Red(), NoColor()) -> False() 804.55/217.21 , eqColor(Red(), Blue()) -> False() 804.55/217.21 , eqColor(Red(), Red()) -> True() 804.55/217.21 , eqColor(Red(), Yellow()) -> False() 804.55/217.21 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.21 , eqColor(Yellow(), Blue()) -> False() 804.55/217.21 , eqColor(Yellow(), Red()) -> False() 804.55/217.21 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.21 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.21 CN(cs, node) 804.55/217.21 , colornode[Ite][True][Ite](False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 node, 804.55/217.21 colorednodes) 804.55/217.21 -> colornode(xs, node, colorednodes) 804.55/217.21 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.21 , !EQ(S(x), 0()) -> False() 804.55/217.21 , !EQ(0(), S(y)) -> False() 804.55/217.21 , !EQ(0(), 0()) -> True() 804.55/217.21 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.21 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.21 Cons(x, xs), 804.55/217.21 N(n, ns), 804.55/217.21 colorednodes) 804.55/217.21 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.21 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.21 False() 804.55/217.21 , possible[Ite][True][Ite](False(), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 -> possible(color, xs, colorednodes) 804.55/217.21 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.21 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.21 node, 804.55/217.21 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.21 , colorof(node, Nil()) -> NoColor() 804.55/217.21 , colorof[Ite][True][Ite](True(), 804.55/217.21 node, 804.55/217.21 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.21 -> x 804.55/217.21 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.21 colorof(node, xs) 804.55/217.21 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.21 -> 804.55/217.21 colorrest[Ite][True][Let][Ite](True(), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 CN(cl, n)) 804.55/217.21 , colorrest[Ite][True][Let](cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 NotPossible()) 804.55/217.21 -> 804.55/217.21 colorrest[Ite][True][Let][Ite](False(), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 NotPossible()) } 804.55/217.21 Obligation: 804.55/217.21 innermost runtime complexity 804.55/217.21 Answer: 804.55/217.21 YES(O(1),O(1)) 804.55/217.21 804.55/217.21 No rule is usable, rules are removed from the input problem. 804.55/217.21 804.55/217.21 We are left with following problem, upon which TcT provides the 804.55/217.21 certificate YES(O(1),O(1)). 804.55/217.21 804.55/217.21 Rules: Empty 804.55/217.21 Obligation: 804.55/217.21 innermost runtime complexity 804.55/217.21 Answer: 804.55/217.21 YES(O(1),O(1)) 804.55/217.21 804.55/217.21 Empty rules are trivially bounded 804.55/217.21 804.55/217.21 S) We are left with following problem, upon which TcT provides the 804.55/217.21 certificate YES(O(1),POLY). 804.55/217.21 804.55/217.21 Strict DPs: 804.55/217.21 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.21 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.21 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.21 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.21 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.21 Cons(x, xs), 804.55/217.21 N(n, ns), 804.55/217.21 colorednodes), 804.55/217.21 possible^#(x, ns, colorednodes)) 804.55/217.21 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.21 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.21 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.21 colorof(x, colorednodes)), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes), 804.55/217.21 colorof^#(x, colorednodes)) 804.55/217.21 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.21 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.21 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.21 node, 804.55/217.21 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.21 , colorof^#(node, Nil()) -> c_8() 804.55/217.21 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.21 c_11(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_12(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_13(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_14(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_15(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_16(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_17(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_18(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_19(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_20(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_21(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_22(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_23(eqColorList^#(cs1, cs2)) 804.55/217.21 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.21 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.21 cs1, 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest), 804.55/217.21 eqColorList^#(cs1, ncs)) } 804.55/217.21 Weak DPs: 804.55/217.21 { possible[Ite][True][Ite]^#(False(), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 -> c_26(possible^#(color, xs, colorednodes)) 804.55/217.21 , reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.55/217.21 , revapp^#(Cons(x, xs), rest) -> c_10(revapp^#(xs, Cons(x, rest))) 804.55/217.21 , colornode[Ite][True][Ite]^#(False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 node, 804.55/217.21 colorednodes) 804.55/217.21 -> c_27(colornode^#(xs, node, colorednodes)) 804.55/217.21 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.21 c_24(reverse^#(colorrest(cs, 804.55/217.21 cs, 804.55/217.21 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.21 xs)), 804.55/217.21 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.21 colornode^#(cs, x, Nil())) 804.55/217.21 , colorrestthetrick[Ite]^#(True(), 804.55/217.21 cs1, 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest) 804.55/217.21 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.21 , colorrestthetrick[Ite]^#(False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest) 804.55/217.21 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.21 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.21 c_30(colorof^#(node, xs)) } 804.55/217.21 Weak Trs: 804.55/217.21 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.21 colorrest[Ite][True][Let](cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 Cons(x, xs), 804.55/217.21 colornode(ncs, x, colorednodes)) 804.55/217.21 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.21 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.21 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 , possible(color, Nil(), colorednodes) -> True() 804.55/217.21 , eqColor(NoColor(), b) -> False() 804.55/217.21 , eqColor(Blue(), NoColor()) -> False() 804.55/217.21 , eqColor(Blue(), Blue()) -> True() 804.55/217.21 , eqColor(Blue(), Red()) -> False() 804.55/217.21 , eqColor(Blue(), Yellow()) -> False() 804.55/217.21 , eqColor(Red(), NoColor()) -> False() 804.55/217.21 , eqColor(Red(), Blue()) -> False() 804.55/217.21 , eqColor(Red(), Red()) -> True() 804.55/217.21 , eqColor(Red(), Yellow()) -> False() 804.55/217.21 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.21 , eqColor(Yellow(), Blue()) -> False() 804.55/217.21 , eqColor(Yellow(), Red()) -> False() 804.55/217.21 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.21 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.21 CN(cs, node) 804.55/217.21 , colornode[Ite][True][Ite](False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 node, 804.55/217.21 colorednodes) 804.55/217.21 -> colornode(xs, node, colorednodes) 804.55/217.21 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.21 , !EQ(S(x), 0()) -> False() 804.55/217.21 , !EQ(0(), S(y)) -> False() 804.55/217.21 , !EQ(0(), 0()) -> True() 804.55/217.21 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.21 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.21 Cons(x, xs), 804.55/217.21 N(n, ns), 804.55/217.21 colorednodes) 804.55/217.21 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.21 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.21 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.21 , eqColorList(Nil(), Nil()) -> True() 804.55/217.21 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.21 False() 804.55/217.21 , possible[Ite][True][Ite](False(), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 -> possible(color, xs, colorednodes) 804.55/217.21 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.21 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.21 node, 804.55/217.21 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.21 , colorof(node, Nil()) -> NoColor() 804.55/217.21 , colorof[Ite][True][Ite](True(), 804.55/217.21 node, 804.55/217.21 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.21 -> x 804.55/217.21 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.21 colorof(node, xs) 804.55/217.21 , and(True(), True()) -> True() 804.55/217.21 , and(True(), False()) -> False() 804.55/217.21 , and(False(), True()) -> False() 804.55/217.21 , and(False(), False()) -> False() 804.55/217.21 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.21 -> 804.55/217.21 colorrest[Ite][True][Let][Ite](True(), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 CN(cl, n)) 804.55/217.21 , colorrest[Ite][True][Let](cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 NotPossible()) 804.55/217.21 -> 804.55/217.21 colorrest[Ite][True][Let][Ite](False(), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest, 804.55/217.21 NotPossible()) } 804.55/217.21 Obligation: 804.55/217.21 innermost runtime complexity 804.55/217.21 Answer: 804.55/217.21 YES(O(1),POLY) 804.55/217.21 804.55/217.21 The following weak DPs constitute a sub-graph of the DG that is 804.55/217.21 closed under successors. The DPs are removed. 804.55/217.21 804.55/217.21 { reverse^#(xs) -> c_9(revapp^#(xs, Nil())) 804.55/217.21 , revapp^#(Cons(x, xs), rest) -> 804.55/217.21 c_10(revapp^#(xs, Cons(x, rest))) } 804.55/217.21 804.55/217.21 We are left with following problem, upon which TcT provides the 804.55/217.21 certificate YES(O(1),POLY). 804.55/217.21 804.55/217.21 Strict DPs: 804.55/217.21 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.21 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.21 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.21 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.21 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.21 Cons(x, xs), 804.55/217.21 N(n, ns), 804.55/217.21 colorednodes), 804.55/217.21 possible^#(x, ns, colorednodes)) 804.55/217.21 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.21 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.21 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.21 colorof(x, colorednodes)), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes), 804.55/217.21 colorof^#(x, colorednodes)) 804.55/217.21 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.21 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.21 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.21 node, 804.55/217.21 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.21 , colorof^#(node, Nil()) -> c_8() 804.55/217.21 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.21 c_11(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_12(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_13(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_14(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_15(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_16(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_17(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_18(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_19(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 c_20(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 c_21(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 c_22(eqColorList^#(cs1, cs2)) 804.55/217.21 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 c_23(eqColorList^#(cs1, cs2)) 804.55/217.21 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.21 c_25(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.21 cs1, 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest), 804.55/217.21 eqColorList^#(cs1, ncs)) } 804.55/217.21 Weak DPs: 804.55/217.21 { possible[Ite][True][Ite]^#(False(), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 -> c_26(possible^#(color, xs, colorednodes)) 804.55/217.21 , colornode[Ite][True][Ite]^#(False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 node, 804.55/217.21 colorednodes) 804.55/217.21 -> c_27(colornode^#(xs, node, colorednodes)) 804.55/217.21 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.21 c_24(reverse^#(colorrest(cs, 804.55/217.21 cs, 804.55/217.21 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.21 xs)), 804.55/217.21 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.21 colornode^#(cs, x, Nil())) 804.55/217.21 , colorrestthetrick[Ite]^#(True(), 804.55/217.21 cs1, 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest) 804.55/217.21 -> c_28(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.21 , colorrestthetrick[Ite]^#(False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 rest) 804.55/217.21 -> c_29(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.21 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.21 c_30(colorof^#(node, xs)) } 804.55/217.21 Weak Trs: 804.55/217.21 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.21 colorrest[Ite][True][Let](cs, 804.55/217.21 ncs, 804.55/217.21 colorednodes, 804.55/217.21 Cons(x, xs), 804.55/217.21 colornode(ncs, x, colorednodes)) 804.55/217.21 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.21 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.21 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 , possible(color, Nil(), colorednodes) -> True() 804.55/217.21 , eqColor(NoColor(), b) -> False() 804.55/217.21 , eqColor(Blue(), NoColor()) -> False() 804.55/217.21 , eqColor(Blue(), Blue()) -> True() 804.55/217.21 , eqColor(Blue(), Red()) -> False() 804.55/217.21 , eqColor(Blue(), Yellow()) -> False() 804.55/217.21 , eqColor(Red(), NoColor()) -> False() 804.55/217.21 , eqColor(Red(), Blue()) -> False() 804.55/217.21 , eqColor(Red(), Red()) -> True() 804.55/217.21 , eqColor(Red(), Yellow()) -> False() 804.55/217.21 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.21 , eqColor(Yellow(), Blue()) -> False() 804.55/217.21 , eqColor(Yellow(), Red()) -> False() 804.55/217.21 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.21 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.21 CN(cs, node) 804.55/217.21 , colornode[Ite][True][Ite](False(), 804.55/217.21 Cons(x, xs), 804.55/217.21 node, 804.55/217.21 colorednodes) 804.55/217.21 -> colornode(xs, node, colorednodes) 804.55/217.21 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.21 , !EQ(S(x), 0()) -> False() 804.55/217.21 , !EQ(0(), S(y)) -> False() 804.55/217.21 , !EQ(0(), 0()) -> True() 804.55/217.21 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.21 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.21 Cons(x, xs), 804.55/217.21 N(n, ns), 804.55/217.21 colorednodes) 804.55/217.21 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.21 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.21 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.21 and(False(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.21 and(True(), eqColorList(cs1, cs2)) 804.55/217.21 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.21 , eqColorList(Nil(), Nil()) -> True() 804.55/217.21 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.21 False() 804.55/217.21 , possible[Ite][True][Ite](False(), 804.55/217.21 color, 804.55/217.21 Cons(x, xs), 804.55/217.21 colorednodes) 804.55/217.21 -> possible(color, xs, colorednodes) 804.55/217.21 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.21 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.21 node, 804.55/217.21 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.21 , colorof(node, Nil()) -> NoColor() 804.55/217.21 , colorof[Ite][True][Ite](True(), 804.55/217.21 node, 804.55/217.21 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.21 -> x 804.55/217.21 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.21 colorof(node, xs) 804.55/217.21 , and(True(), True()) -> True() 804.55/217.21 , and(True(), False()) -> False() 804.55/217.21 , and(False(), True()) -> False() 804.55/217.21 , and(False(), False()) -> False() 804.55/217.21 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.21 -> 804.55/217.21 colorrest[Ite][True][Let][Ite](True(), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 CN(cl, n)) 804.55/217.22 , colorrest[Ite][True][Let](cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 NotPossible()) 804.55/217.22 -> 804.55/217.22 colorrest[Ite][True][Let][Ite](False(), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 NotPossible()) } 804.55/217.22 Obligation: 804.55/217.22 innermost runtime complexity 804.55/217.22 Answer: 804.55/217.22 YES(O(1),POLY) 804.55/217.22 804.55/217.22 Due to missing edges in the dependency-graph, the right-hand sides 804.55/217.22 of following rules could be simplified: 804.55/217.22 804.55/217.22 { graphcolour^#(Cons(x, xs), cs) -> 804.55/217.22 c_24(reverse^#(colorrest(cs, 804.55/217.22 cs, 804.55/217.22 Cons(colornode(cs, x, Nil()), Nil()), 804.55/217.22 xs)), 804.55/217.22 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.22 colornode^#(cs, x, Nil())) } 804.55/217.22 804.55/217.22 We are left with following problem, upon which TcT provides the 804.55/217.22 certificate YES(O(1),POLY). 804.55/217.22 804.55/217.22 Strict DPs: 804.55/217.22 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.22 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.22 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.22 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.22 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.22 Cons(x, xs), 804.55/217.22 N(n, ns), 804.55/217.22 colorednodes), 804.55/217.22 possible^#(x, ns, colorednodes)) 804.55/217.22 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.22 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.22 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.22 colorof(x, colorednodes)), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes), 804.55/217.22 colorof^#(x, colorednodes)) 804.55/217.22 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.22 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.22 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.22 node, 804.55/217.22 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.22 , colorof^#(node, Nil()) -> c_8() 804.55/217.22 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.22 c_9(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_10(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_11(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_12(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_13(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_14(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_15(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_16(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_17(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_18(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_19(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_20(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_21(eqColorList^#(cs1, cs2)) 804.55/217.22 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.22 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.22 cs1, 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest), 804.55/217.22 eqColorList^#(cs1, ncs)) } 804.55/217.22 Weak DPs: 804.55/217.22 { possible[Ite][True][Ite]^#(False(), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.22 , colornode[Ite][True][Ite]^#(False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 node, 804.55/217.22 colorednodes) 804.55/217.22 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.22 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.22 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.22 colornode^#(cs, x, Nil())) 804.55/217.22 , colorrestthetrick[Ite]^#(True(), 804.55/217.22 cs1, 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest) 804.55/217.22 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.22 , colorrestthetrick[Ite]^#(False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest) 804.55/217.22 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.22 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.22 c_28(colorof^#(node, xs)) } 804.55/217.22 Weak Trs: 804.55/217.22 { colorrest(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.22 colorrest[Ite][True][Let](cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 Cons(x, xs), 804.55/217.22 colornode(ncs, x, colorednodes)) 804.55/217.22 , colorrest(cs, ncs, colorednodes, Nil()) -> colorednodes 804.55/217.22 , possible(color, Cons(x, xs), colorednodes) -> 804.55/217.22 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 , possible(color, Nil(), colorednodes) -> True() 804.55/217.22 , eqColor(NoColor(), b) -> False() 804.55/217.22 , eqColor(Blue(), NoColor()) -> False() 804.55/217.22 , eqColor(Blue(), Blue()) -> True() 804.55/217.22 , eqColor(Blue(), Red()) -> False() 804.55/217.22 , eqColor(Blue(), Yellow()) -> False() 804.55/217.22 , eqColor(Red(), NoColor()) -> False() 804.55/217.22 , eqColor(Red(), Blue()) -> False() 804.55/217.22 , eqColor(Red(), Red()) -> True() 804.55/217.22 , eqColor(Red(), Yellow()) -> False() 804.55/217.22 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.22 , eqColor(Yellow(), Blue()) -> False() 804.55/217.22 , eqColor(Yellow(), Red()) -> False() 804.55/217.22 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.22 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.22 CN(cs, node) 804.55/217.22 , colornode[Ite][True][Ite](False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 node, 804.55/217.22 colorednodes) 804.55/217.22 -> colornode(xs, node, colorednodes) 804.55/217.22 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.22 , !EQ(S(x), 0()) -> False() 804.55/217.22 , !EQ(0(), S(y)) -> False() 804.55/217.22 , !EQ(0(), 0()) -> True() 804.55/217.22 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.22 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.22 Cons(x, xs), 804.55/217.22 N(n, ns), 804.55/217.22 colorednodes) 804.55/217.22 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.22 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.22 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.22 , eqColorList(Nil(), Nil()) -> True() 804.55/217.22 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.22 False() 804.55/217.22 , possible[Ite][True][Ite](False(), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 -> possible(color, xs, colorednodes) 804.55/217.22 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.22 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.22 node, 804.55/217.22 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.22 , colorof(node, Nil()) -> NoColor() 804.55/217.22 , colorof[Ite][True][Ite](True(), 804.55/217.22 node, 804.55/217.22 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.22 -> x 804.55/217.22 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.22 colorof(node, xs) 804.55/217.22 , and(True(), True()) -> True() 804.55/217.22 , and(True(), False()) -> False() 804.55/217.22 , and(False(), True()) -> False() 804.55/217.22 , and(False(), False()) -> False() 804.55/217.22 , colorrest[Ite][True][Let](cs, ncs, colorednodes, rest, CN(cl, n)) 804.55/217.22 -> 804.55/217.22 colorrest[Ite][True][Let][Ite](True(), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 CN(cl, n)) 804.55/217.22 , colorrest[Ite][True][Let](cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 NotPossible()) 804.55/217.22 -> 804.55/217.22 colorrest[Ite][True][Let][Ite](False(), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest, 804.55/217.22 NotPossible()) } 804.55/217.22 Obligation: 804.55/217.22 innermost runtime complexity 804.55/217.22 Answer: 804.55/217.22 YES(O(1),POLY) 804.55/217.22 804.55/217.22 We replace rewrite rules by usable rules: 804.55/217.22 804.55/217.22 Weak Usable Rules: 804.55/217.22 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.22 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 , possible(color, Nil(), colorednodes) -> True() 804.55/217.22 , eqColor(NoColor(), b) -> False() 804.55/217.22 , eqColor(Blue(), NoColor()) -> False() 804.55/217.22 , eqColor(Blue(), Blue()) -> True() 804.55/217.22 , eqColor(Blue(), Red()) -> False() 804.55/217.22 , eqColor(Blue(), Yellow()) -> False() 804.55/217.22 , eqColor(Red(), NoColor()) -> False() 804.55/217.22 , eqColor(Red(), Blue()) -> False() 804.55/217.22 , eqColor(Red(), Red()) -> True() 804.55/217.22 , eqColor(Red(), Yellow()) -> False() 804.55/217.22 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.22 , eqColor(Yellow(), Blue()) -> False() 804.55/217.22 , eqColor(Yellow(), Red()) -> False() 804.55/217.22 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.22 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.22 CN(cs, node) 804.55/217.22 , colornode[Ite][True][Ite](False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 node, 804.55/217.22 colorednodes) 804.55/217.22 -> colornode(xs, node, colorednodes) 804.55/217.22 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.22 , !EQ(S(x), 0()) -> False() 804.55/217.22 , !EQ(0(), S(y)) -> False() 804.55/217.22 , !EQ(0(), 0()) -> True() 804.55/217.22 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.22 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.22 Cons(x, xs), 804.55/217.22 N(n, ns), 804.55/217.22 colorednodes) 804.55/217.22 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.22 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.22 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.22 , eqColorList(Nil(), Nil()) -> True() 804.55/217.22 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.22 False() 804.55/217.22 , possible[Ite][True][Ite](False(), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 -> possible(color, xs, colorednodes) 804.55/217.22 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.22 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.22 node, 804.55/217.22 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.22 , colorof(node, Nil()) -> NoColor() 804.55/217.22 , colorof[Ite][True][Ite](True(), 804.55/217.22 node, 804.55/217.22 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.22 -> x 804.55/217.22 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.22 colorof(node, xs) 804.55/217.22 , and(True(), True()) -> True() 804.55/217.22 , and(True(), False()) -> False() 804.55/217.22 , and(False(), True()) -> False() 804.55/217.22 , and(False(), False()) -> False() } 804.55/217.22 804.55/217.22 We are left with following problem, upon which TcT provides the 804.55/217.22 certificate YES(O(1),POLY). 804.55/217.22 804.55/217.22 Strict DPs: 804.55/217.22 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.22 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.22 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.22 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.22 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.22 Cons(x, xs), 804.55/217.22 N(n, ns), 804.55/217.22 colorednodes), 804.55/217.22 possible^#(x, ns, colorednodes)) 804.55/217.22 , colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.22 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.22 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.22 colorof(x, colorednodes)), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes), 804.55/217.22 colorof^#(x, colorednodes)) 804.55/217.22 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.22 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.22 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.22 node, 804.55/217.22 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.22 , colorof^#(node, Nil()) -> c_8() 804.55/217.22 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.22 c_9(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_10(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_11(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_12(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_13(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_14(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_15(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_16(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_17(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 c_18(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 c_19(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 c_20(eqColorList^#(cs1, cs2)) 804.55/217.22 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 c_21(eqColorList^#(cs1, cs2)) 804.55/217.22 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.22 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.22 cs1, 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest), 804.55/217.22 eqColorList^#(cs1, ncs)) } 804.55/217.22 Weak DPs: 804.55/217.22 { possible[Ite][True][Ite]^#(False(), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.22 , colornode[Ite][True][Ite]^#(False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 node, 804.55/217.22 colorednodes) 804.55/217.22 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.22 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.22 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.22 colornode^#(cs, x, Nil())) 804.55/217.22 , colorrestthetrick[Ite]^#(True(), 804.55/217.22 cs1, 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest) 804.55/217.22 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.22 , colorrestthetrick[Ite]^#(False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 cs, 804.55/217.22 ncs, 804.55/217.22 colorednodes, 804.55/217.22 rest) 804.55/217.22 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.22 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.22 c_28(colorof^#(node, xs)) } 804.55/217.22 Weak Trs: 804.55/217.22 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.22 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 , possible(color, Nil(), colorednodes) -> True() 804.55/217.22 , eqColor(NoColor(), b) -> False() 804.55/217.22 , eqColor(Blue(), NoColor()) -> False() 804.55/217.22 , eqColor(Blue(), Blue()) -> True() 804.55/217.22 , eqColor(Blue(), Red()) -> False() 804.55/217.22 , eqColor(Blue(), Yellow()) -> False() 804.55/217.22 , eqColor(Red(), NoColor()) -> False() 804.55/217.22 , eqColor(Red(), Blue()) -> False() 804.55/217.22 , eqColor(Red(), Red()) -> True() 804.55/217.22 , eqColor(Red(), Yellow()) -> False() 804.55/217.22 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.22 , eqColor(Yellow(), Blue()) -> False() 804.55/217.22 , eqColor(Yellow(), Red()) -> False() 804.55/217.22 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.22 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.22 CN(cs, node) 804.55/217.22 , colornode[Ite][True][Ite](False(), 804.55/217.22 Cons(x, xs), 804.55/217.22 node, 804.55/217.22 colorednodes) 804.55/217.22 -> colornode(xs, node, colorednodes) 804.55/217.22 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.22 , !EQ(S(x), 0()) -> False() 804.55/217.22 , !EQ(0(), S(y)) -> False() 804.55/217.22 , !EQ(0(), 0()) -> True() 804.55/217.22 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.22 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.22 Cons(x, xs), 804.55/217.22 N(n, ns), 804.55/217.22 colorednodes) 804.55/217.22 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.22 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.22 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.22 and(False(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.22 and(True(), eqColorList(cs1, cs2)) 804.55/217.22 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.22 , eqColorList(Nil(), Nil()) -> True() 804.55/217.22 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.22 False() 804.55/217.22 , possible[Ite][True][Ite](False(), 804.55/217.22 color, 804.55/217.22 Cons(x, xs), 804.55/217.22 colorednodes) 804.55/217.22 -> possible(color, xs, colorednodes) 804.55/217.22 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.22 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.22 node, 804.55/217.22 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.22 , colorof(node, Nil()) -> NoColor() 804.55/217.22 , colorof[Ite][True][Ite](True(), 804.55/217.22 node, 804.55/217.22 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.22 -> x 804.55/217.22 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.22 colorof(node, xs) 804.55/217.22 , and(True(), True()) -> True() 804.55/217.22 , and(True(), False()) -> False() 804.55/217.22 , and(False(), True()) -> False() 804.55/217.22 , and(False(), False()) -> False() } 804.55/217.22 Obligation: 804.55/217.22 innermost runtime complexity 804.55/217.22 Answer: 804.55/217.22 YES(O(1),POLY) 804.55/217.22 804.55/217.22 We analyse the complexity of following sub-problems (R) and (S). 804.55/217.22 Problem (S) is obtained from the input problem by shifting strict 804.55/217.22 rules from (R) into the weak component: 804.55/217.22 804.55/217.22 Problem (R): 804.55/217.22 ------------ 804.55/217.22 Strict DPs: { colornode^#(Nil(), node, colorednodes) -> c_4() } 804.55/217.22 Weak DPs: 804.55/217.22 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.22 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.23 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.23 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.23 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.23 Cons(x, xs), 804.55/217.23 N(n, ns), 804.55/217.23 colorednodes), 804.55/217.23 possible^#(x, ns, colorednodes)) 804.55/217.23 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.23 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.23 colorof(x, colorednodes)), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes), 804.55/217.23 colorof^#(x, colorednodes)) 804.55/217.23 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.23 , possible[Ite][True][Ite]^#(False(), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes) 804.55/217.23 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.23 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.23 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.23 node, 804.55/217.23 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.23 , colorof^#(node, Nil()) -> c_8() 804.55/217.23 , colornode[Ite][True][Ite]^#(False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 node, 804.55/217.23 colorednodes) 804.55/217.23 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.23 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.23 c_9(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_10(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_11(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_12(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_13(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_14(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_15(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_16(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_17(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_18(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_19(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_20(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_21(eqColorList^#(cs1, cs2)) 804.55/217.23 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.23 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.23 colornode^#(cs, x, Nil())) 804.55/217.23 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.23 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.23 cs1, 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest), 804.55/217.23 eqColorList^#(cs1, ncs)) 804.55/217.23 , colorrestthetrick[Ite]^#(True(), 804.55/217.23 cs1, 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest) 804.55/217.23 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.23 , colorrestthetrick[Ite]^#(False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest) 804.55/217.23 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.23 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.23 c_28(colorof^#(node, xs)) } 804.55/217.23 Weak Trs: 804.55/217.23 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.23 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes) 804.55/217.23 , possible(color, Nil(), colorednodes) -> True() 804.55/217.23 , eqColor(NoColor(), b) -> False() 804.55/217.23 , eqColor(Blue(), NoColor()) -> False() 804.55/217.23 , eqColor(Blue(), Blue()) -> True() 804.55/217.23 , eqColor(Blue(), Red()) -> False() 804.55/217.23 , eqColor(Blue(), Yellow()) -> False() 804.55/217.23 , eqColor(Red(), NoColor()) -> False() 804.55/217.23 , eqColor(Red(), Blue()) -> False() 804.55/217.23 , eqColor(Red(), Red()) -> True() 804.55/217.23 , eqColor(Red(), Yellow()) -> False() 804.55/217.23 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.23 , eqColor(Yellow(), Blue()) -> False() 804.55/217.23 , eqColor(Yellow(), Red()) -> False() 804.55/217.23 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.23 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.23 CN(cs, node) 804.55/217.23 , colornode[Ite][True][Ite](False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 node, 804.55/217.23 colorednodes) 804.55/217.23 -> colornode(xs, node, colorednodes) 804.55/217.23 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.23 , !EQ(S(x), 0()) -> False() 804.55/217.23 , !EQ(0(), S(y)) -> False() 804.55/217.23 , !EQ(0(), 0()) -> True() 804.55/217.23 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.23 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.23 Cons(x, xs), 804.55/217.23 N(n, ns), 804.55/217.23 colorednodes) 804.55/217.23 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.23 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.23 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.23 , eqColorList(Nil(), Nil()) -> True() 804.55/217.23 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.23 False() 804.55/217.23 , possible[Ite][True][Ite](False(), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes) 804.55/217.23 -> possible(color, xs, colorednodes) 804.55/217.23 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.23 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.23 node, 804.55/217.23 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.23 , colorof(node, Nil()) -> NoColor() 804.55/217.23 , colorof[Ite][True][Ite](True(), 804.55/217.23 node, 804.55/217.23 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.23 -> x 804.55/217.23 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.23 colorof(node, xs) 804.55/217.23 , and(True(), True()) -> True() 804.55/217.23 , and(True(), False()) -> False() 804.55/217.23 , and(False(), True()) -> False() 804.55/217.23 , and(False(), False()) -> False() } 804.55/217.23 StartTerms: basic terms 804.55/217.23 Strategy: innermost 804.55/217.23 804.55/217.23 Problem (S): 804.55/217.23 ------------ 804.55/217.23 Strict DPs: 804.55/217.23 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.23 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.23 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.23 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.23 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.23 Cons(x, xs), 804.55/217.23 N(n, ns), 804.55/217.23 colorednodes), 804.55/217.23 possible^#(x, ns, colorednodes)) 804.55/217.23 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.23 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.23 colorof(x, colorednodes)), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes), 804.55/217.23 colorof^#(x, colorednodes)) 804.55/217.23 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.23 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.23 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.23 node, 804.55/217.23 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.23 , colorof^#(node, Nil()) -> c_8() 804.55/217.23 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.23 c_9(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_10(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_11(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_12(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_13(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_14(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_15(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_16(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_17(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 c_18(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 c_19(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 c_20(eqColorList^#(cs1, cs2)) 804.55/217.23 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 c_21(eqColorList^#(cs1, cs2)) 804.55/217.23 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.23 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.23 cs1, 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest), 804.55/217.23 eqColorList^#(cs1, ncs)) } 804.55/217.23 Weak DPs: 804.55/217.23 { colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.23 , possible[Ite][True][Ite]^#(False(), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes) 804.55/217.23 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.23 , colornode[Ite][True][Ite]^#(False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 node, 804.55/217.23 colorednodes) 804.55/217.23 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.23 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.23 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.23 colornode^#(cs, x, Nil())) 804.55/217.23 , colorrestthetrick[Ite]^#(True(), 804.55/217.23 cs1, 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest) 804.55/217.23 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.23 , colorrestthetrick[Ite]^#(False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 cs, 804.55/217.23 ncs, 804.55/217.23 colorednodes, 804.55/217.23 rest) 804.55/217.23 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.23 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.23 c_28(colorof^#(node, xs)) } 804.55/217.23 Weak Trs: 804.55/217.23 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.23 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.23 color, 804.55/217.23 Cons(x, xs), 804.55/217.23 colorednodes) 804.55/217.23 , possible(color, Nil(), colorednodes) -> True() 804.55/217.23 , eqColor(NoColor(), b) -> False() 804.55/217.23 , eqColor(Blue(), NoColor()) -> False() 804.55/217.23 , eqColor(Blue(), Blue()) -> True() 804.55/217.23 , eqColor(Blue(), Red()) -> False() 804.55/217.23 , eqColor(Blue(), Yellow()) -> False() 804.55/217.23 , eqColor(Red(), NoColor()) -> False() 804.55/217.23 , eqColor(Red(), Blue()) -> False() 804.55/217.23 , eqColor(Red(), Red()) -> True() 804.55/217.23 , eqColor(Red(), Yellow()) -> False() 804.55/217.23 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.23 , eqColor(Yellow(), Blue()) -> False() 804.55/217.23 , eqColor(Yellow(), Red()) -> False() 804.55/217.23 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.23 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.23 CN(cs, node) 804.55/217.23 , colornode[Ite][True][Ite](False(), 804.55/217.23 Cons(x, xs), 804.55/217.23 node, 804.55/217.23 colorednodes) 804.55/217.23 -> colornode(xs, node, colorednodes) 804.55/217.23 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.23 , !EQ(S(x), 0()) -> False() 804.55/217.23 , !EQ(0(), S(y)) -> False() 804.55/217.23 , !EQ(0(), 0()) -> True() 804.55/217.23 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.23 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.23 Cons(x, xs), 804.55/217.23 N(n, ns), 804.55/217.23 colorednodes) 804.55/217.23 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.23 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.23 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.23 and(False(), eqColorList(cs1, cs2)) 804.55/217.23 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.23 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.24 , eqColorList(Nil(), Nil()) -> True() 804.55/217.24 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.24 False() 804.55/217.24 , possible[Ite][True][Ite](False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> possible(color, xs, colorednodes) 804.55/217.24 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.24 , colorof(node, Nil()) -> NoColor() 804.55/217.24 , colorof[Ite][True][Ite](True(), 804.55/217.24 node, 804.55/217.24 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.24 -> x 804.55/217.24 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.24 colorof(node, xs) 804.55/217.24 , and(True(), True()) -> True() 804.55/217.24 , and(True(), False()) -> False() 804.55/217.24 , and(False(), True()) -> False() 804.55/217.24 , and(False(), False()) -> False() } 804.55/217.24 StartTerms: basic terms 804.55/217.24 Strategy: innermost 804.55/217.24 804.55/217.24 Overall, the transformation results in the following sub-problem(s): 804.55/217.24 804.55/217.24 Generated new problems: 804.55/217.24 ----------------------- 804.55/217.24 R) Strict DPs: { colornode^#(Nil(), node, colorednodes) -> c_4() } 804.55/217.24 Weak DPs: 804.55/217.24 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.24 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.24 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.24 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.24 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.24 Cons(x, xs), 804.55/217.24 N(n, ns), 804.55/217.24 colorednodes), 804.55/217.24 possible^#(x, ns, colorednodes)) 804.55/217.24 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.24 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.24 colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes), 804.55/217.24 colorof^#(x, colorednodes)) 804.55/217.24 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.24 , possible[Ite][True][Ite]^#(False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.24 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.24 , colorof^#(node, Nil()) -> c_8() 804.55/217.24 , colornode[Ite][True][Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 node, 804.55/217.24 colorednodes) 804.55/217.24 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.24 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.24 c_9(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_10(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_11(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_12(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_13(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_14(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_15(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_16(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_17(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_18(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_19(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_20(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_21(eqColorList^#(cs1, cs2)) 804.55/217.24 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.24 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.24 colornode^#(cs, x, Nil())) 804.55/217.24 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.24 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest), 804.55/217.24 eqColorList^#(cs1, ncs)) 804.55/217.24 , colorrestthetrick[Ite]^#(True(), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.24 , colorrestthetrick[Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.24 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.24 c_28(colorof^#(node, xs)) } 804.55/217.24 Weak Trs: 804.55/217.24 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.24 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 , possible(color, Nil(), colorednodes) -> True() 804.55/217.24 , eqColor(NoColor(), b) -> False() 804.55/217.24 , eqColor(Blue(), NoColor()) -> False() 804.55/217.24 , eqColor(Blue(), Blue()) -> True() 804.55/217.24 , eqColor(Blue(), Red()) -> False() 804.55/217.24 , eqColor(Blue(), Yellow()) -> False() 804.55/217.24 , eqColor(Red(), NoColor()) -> False() 804.55/217.24 , eqColor(Red(), Blue()) -> False() 804.55/217.24 , eqColor(Red(), Red()) -> True() 804.55/217.24 , eqColor(Red(), Yellow()) -> False() 804.55/217.24 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.24 , eqColor(Yellow(), Blue()) -> False() 804.55/217.24 , eqColor(Yellow(), Red()) -> False() 804.55/217.24 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.24 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.24 CN(cs, node) 804.55/217.24 , colornode[Ite][True][Ite](False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 node, 804.55/217.24 colorednodes) 804.55/217.24 -> colornode(xs, node, colorednodes) 804.55/217.24 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.24 , !EQ(S(x), 0()) -> False() 804.55/217.24 , !EQ(0(), S(y)) -> False() 804.55/217.24 , !EQ(0(), 0()) -> True() 804.55/217.24 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.24 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.24 Cons(x, xs), 804.55/217.24 N(n, ns), 804.55/217.24 colorednodes) 804.55/217.24 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.24 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.24 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.24 , eqColorList(Nil(), Nil()) -> True() 804.55/217.24 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.24 False() 804.55/217.24 , possible[Ite][True][Ite](False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> possible(color, xs, colorednodes) 804.55/217.24 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.24 , colorof(node, Nil()) -> NoColor() 804.55/217.24 , colorof[Ite][True][Ite](True(), 804.55/217.24 node, 804.55/217.24 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.24 -> x 804.55/217.24 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.24 colorof(node, xs) 804.55/217.24 , and(True(), True()) -> True() 804.55/217.24 , and(True(), False()) -> False() 804.55/217.24 , and(False(), True()) -> False() 804.55/217.24 , and(False(), False()) -> False() } 804.55/217.24 StartTerms: basic terms 804.55/217.24 Strategy: innermost 804.55/217.24 804.55/217.24 This problem was proven YES(O(1),O(1)). 804.55/217.24 804.55/217.24 S) Strict DPs: 804.55/217.24 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.24 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.24 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.24 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.24 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.24 Cons(x, xs), 804.55/217.24 N(n, ns), 804.55/217.24 colorednodes), 804.55/217.24 possible^#(x, ns, colorednodes)) 804.55/217.24 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.24 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.24 colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes), 804.55/217.24 colorof^#(x, colorednodes)) 804.55/217.24 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.24 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.24 , colorof^#(node, Nil()) -> c_8() 804.55/217.24 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.24 c_9(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_10(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_11(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_12(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_13(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_14(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_15(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_16(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_17(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_18(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_19(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_20(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_21(eqColorList^#(cs1, cs2)) 804.55/217.24 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.24 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest), 804.55/217.24 eqColorList^#(cs1, ncs)) } 804.55/217.24 Weak DPs: 804.55/217.24 { colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.24 , possible[Ite][True][Ite]^#(False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.24 , colornode[Ite][True][Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 node, 804.55/217.24 colorednodes) 804.55/217.24 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.24 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.24 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.24 colornode^#(cs, x, Nil())) 804.55/217.24 , colorrestthetrick[Ite]^#(True(), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.24 , colorrestthetrick[Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.24 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.24 c_28(colorof^#(node, xs)) } 804.55/217.24 Weak Trs: 804.55/217.24 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.24 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 , possible(color, Nil(), colorednodes) -> True() 804.55/217.24 , eqColor(NoColor(), b) -> False() 804.55/217.24 , eqColor(Blue(), NoColor()) -> False() 804.55/217.24 , eqColor(Blue(), Blue()) -> True() 804.55/217.24 , eqColor(Blue(), Red()) -> False() 804.55/217.24 , eqColor(Blue(), Yellow()) -> False() 804.55/217.24 , eqColor(Red(), NoColor()) -> False() 804.55/217.24 , eqColor(Red(), Blue()) -> False() 804.55/217.24 , eqColor(Red(), Red()) -> True() 804.55/217.24 , eqColor(Red(), Yellow()) -> False() 804.55/217.24 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.24 , eqColor(Yellow(), Blue()) -> False() 804.55/217.24 , eqColor(Yellow(), Red()) -> False() 804.55/217.24 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.24 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.24 CN(cs, node) 804.55/217.24 , colornode[Ite][True][Ite](False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 node, 804.55/217.24 colorednodes) 804.55/217.24 -> colornode(xs, node, colorednodes) 804.55/217.24 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.24 , !EQ(S(x), 0()) -> False() 804.55/217.24 , !EQ(0(), S(y)) -> False() 804.55/217.24 , !EQ(0(), 0()) -> True() 804.55/217.24 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.24 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.24 Cons(x, xs), 804.55/217.24 N(n, ns), 804.55/217.24 colorednodes) 804.55/217.24 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.24 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.24 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 and(False(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 and(True(), eqColorList(cs1, cs2)) 804.55/217.24 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.24 , eqColorList(Nil(), Nil()) -> True() 804.55/217.24 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.24 False() 804.55/217.24 , possible[Ite][True][Ite](False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> possible(color, xs, colorednodes) 804.55/217.24 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.24 , colorof(node, Nil()) -> NoColor() 804.55/217.24 , colorof[Ite][True][Ite](True(), 804.55/217.24 node, 804.55/217.24 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.24 -> x 804.55/217.24 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.24 colorof(node, xs) 804.55/217.24 , and(True(), True()) -> True() 804.55/217.24 , and(True(), False()) -> False() 804.55/217.24 , and(False(), True()) -> False() 804.55/217.24 , and(False(), False()) -> False() } 804.55/217.24 StartTerms: basic terms 804.55/217.24 Strategy: innermost 804.55/217.24 804.55/217.24 This problem was proven YES(O(1),POLY). 804.55/217.24 804.55/217.24 804.55/217.24 Proofs for generated problems: 804.55/217.24 ------------------------------ 804.55/217.24 R) We are left with following problem, upon which TcT provides the 804.55/217.24 certificate YES(O(1),O(1)). 804.55/217.24 804.55/217.24 Strict DPs: { colornode^#(Nil(), node, colorednodes) -> c_4() } 804.55/217.24 Weak DPs: 804.55/217.24 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.24 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.24 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.24 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.24 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.24 Cons(x, xs), 804.55/217.24 N(n, ns), 804.55/217.24 colorednodes), 804.55/217.24 possible^#(x, ns, colorednodes)) 804.55/217.24 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.24 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.24 colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes), 804.55/217.24 colorof^#(x, colorednodes)) 804.55/217.24 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.24 , possible[Ite][True][Ite]^#(False(), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.24 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.24 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.24 node, 804.55/217.24 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.24 , colorof^#(node, Nil()) -> c_8() 804.55/217.24 , colornode[Ite][True][Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 node, 804.55/217.24 colorednodes) 804.55/217.24 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.24 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.24 c_9(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_10(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_11(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_12(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_13(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_14(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_15(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_16(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_17(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.24 c_18(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.24 c_19(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.24 c_20(eqColorList^#(cs1, cs2)) 804.55/217.24 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.24 c_21(eqColorList^#(cs1, cs2)) 804.55/217.24 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.24 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.24 colornode^#(cs, x, Nil())) 804.55/217.24 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.24 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest), 804.55/217.24 eqColorList^#(cs1, ncs)) 804.55/217.24 , colorrestthetrick[Ite]^#(True(), 804.55/217.24 cs1, 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.24 , colorrestthetrick[Ite]^#(False(), 804.55/217.24 Cons(x, xs), 804.55/217.24 cs, 804.55/217.24 ncs, 804.55/217.24 colorednodes, 804.55/217.24 rest) 804.55/217.24 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.24 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.24 c_28(colorof^#(node, xs)) } 804.55/217.24 Weak Trs: 804.55/217.24 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.24 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.24 color, 804.55/217.24 Cons(x, xs), 804.55/217.24 colorednodes) 804.55/217.24 , possible(color, Nil(), colorednodes) -> True() 804.55/217.26 , eqColor(NoColor(), b) -> False() 804.55/217.26 , eqColor(Blue(), NoColor()) -> False() 804.55/217.26 , eqColor(Blue(), Blue()) -> True() 804.55/217.26 , eqColor(Blue(), Red()) -> False() 804.55/217.26 , eqColor(Blue(), Yellow()) -> False() 804.55/217.26 , eqColor(Red(), NoColor()) -> False() 804.55/217.26 , eqColor(Red(), Blue()) -> False() 804.55/217.26 , eqColor(Red(), Red()) -> True() 804.55/217.26 , eqColor(Red(), Yellow()) -> False() 804.55/217.26 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.26 , eqColor(Yellow(), Blue()) -> False() 804.55/217.26 , eqColor(Yellow(), Red()) -> False() 804.55/217.26 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.26 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.26 CN(cs, node) 804.55/217.26 , colornode[Ite][True][Ite](False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 node, 804.55/217.26 colorednodes) 804.55/217.26 -> colornode(xs, node, colorednodes) 804.55/217.26 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.26 , !EQ(S(x), 0()) -> False() 804.55/217.26 , !EQ(0(), S(y)) -> False() 804.55/217.26 , !EQ(0(), 0()) -> True() 804.55/217.26 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes) 804.55/217.26 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.26 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.26 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.26 , eqColorList(Nil(), Nil()) -> True() 804.55/217.26 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.26 False() 804.55/217.26 , possible[Ite][True][Ite](False(), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes) 804.55/217.26 -> possible(color, xs, colorednodes) 804.55/217.26 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.26 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.26 node, 804.55/217.26 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.26 , colorof(node, Nil()) -> NoColor() 804.55/217.26 , colorof[Ite][True][Ite](True(), 804.55/217.26 node, 804.55/217.26 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.26 -> x 804.55/217.26 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.26 colorof(node, xs) 804.55/217.26 , and(True(), True()) -> True() 804.55/217.26 , and(True(), False()) -> False() 804.55/217.26 , and(False(), True()) -> False() 804.55/217.26 , and(False(), False()) -> False() } 804.55/217.26 Obligation: 804.55/217.26 innermost runtime complexity 804.55/217.26 Answer: 804.55/217.26 YES(O(1),O(1)) 804.55/217.26 804.55/217.26 The following weak DPs constitute a sub-graph of the DG that is 804.55/217.26 closed under successors. The DPs are removed. 804.55/217.26 804.55/217.26 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.26 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.26 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.26 colorof(x, colorednodes)), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes), 804.55/217.26 colorof^#(x, colorednodes)) 804.55/217.26 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.26 , possible[Ite][True][Ite]^#(False(), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes) 804.55/217.26 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.26 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.26 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.26 node, 804.55/217.26 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.26 , colorof^#(node, Nil()) -> c_8() 804.55/217.26 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.26 c_9(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 c_10(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 c_11(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 c_12(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 c_13(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 c_14(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 c_15(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 c_16(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 c_17(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 c_18(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 c_19(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 c_20(eqColorList^#(cs1, cs2)) 804.55/217.26 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 c_21(eqColorList^#(cs1, cs2)) 804.55/217.26 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.26 c_28(colorof^#(node, xs)) } 804.55/217.26 804.55/217.26 We are left with following problem, upon which TcT provides the 804.55/217.26 certificate YES(O(1),O(1)). 804.55/217.26 804.55/217.26 Strict DPs: { colornode^#(Nil(), node, colorednodes) -> c_4() } 804.55/217.26 Weak DPs: 804.55/217.26 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.26 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.26 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes), 804.55/217.26 possible^#(x, ns, colorednodes)) 804.55/217.26 , colornode[Ite][True][Ite]^#(False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 node, 804.55/217.26 colorednodes) 804.55/217.26 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.26 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.26 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.26 colornode^#(cs, x, Nil())) 804.55/217.26 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.26 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.26 cs1, 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest), 804.55/217.26 eqColorList^#(cs1, ncs)) 804.55/217.26 , colorrestthetrick[Ite]^#(True(), 804.55/217.26 cs1, 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest) 804.55/217.26 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.26 , colorrestthetrick[Ite]^#(False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest) 804.55/217.26 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.55/217.26 Weak Trs: 804.55/217.26 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.26 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes) 804.55/217.26 , possible(color, Nil(), colorednodes) -> True() 804.55/217.26 , eqColor(NoColor(), b) -> False() 804.55/217.26 , eqColor(Blue(), NoColor()) -> False() 804.55/217.26 , eqColor(Blue(), Blue()) -> True() 804.55/217.26 , eqColor(Blue(), Red()) -> False() 804.55/217.26 , eqColor(Blue(), Yellow()) -> False() 804.55/217.26 , eqColor(Red(), NoColor()) -> False() 804.55/217.26 , eqColor(Red(), Blue()) -> False() 804.55/217.26 , eqColor(Red(), Red()) -> True() 804.55/217.26 , eqColor(Red(), Yellow()) -> False() 804.55/217.26 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.26 , eqColor(Yellow(), Blue()) -> False() 804.55/217.26 , eqColor(Yellow(), Red()) -> False() 804.55/217.26 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.26 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.26 CN(cs, node) 804.55/217.26 , colornode[Ite][True][Ite](False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 node, 804.55/217.26 colorednodes) 804.55/217.26 -> colornode(xs, node, colorednodes) 804.55/217.26 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.26 , !EQ(S(x), 0()) -> False() 804.55/217.26 , !EQ(0(), S(y)) -> False() 804.55/217.26 , !EQ(0(), 0()) -> True() 804.55/217.26 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes) 804.55/217.26 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.26 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.26 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.26 , eqColorList(Nil(), Nil()) -> True() 804.55/217.26 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.26 False() 804.55/217.26 , possible[Ite][True][Ite](False(), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes) 804.55/217.26 -> possible(color, xs, colorednodes) 804.55/217.26 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.26 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.26 node, 804.55/217.26 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.26 , colorof(node, Nil()) -> NoColor() 804.55/217.26 , colorof[Ite][True][Ite](True(), 804.55/217.26 node, 804.55/217.26 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.26 -> x 804.55/217.26 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.26 colorof(node, xs) 804.55/217.26 , and(True(), True()) -> True() 804.55/217.26 , and(True(), False()) -> False() 804.55/217.26 , and(False(), True()) -> False() 804.55/217.26 , and(False(), False()) -> False() } 804.55/217.26 Obligation: 804.55/217.26 innermost runtime complexity 804.55/217.26 Answer: 804.55/217.26 YES(O(1),O(1)) 804.55/217.26 804.55/217.26 Due to missing edges in the dependency-graph, the right-hand sides 804.55/217.26 of following rules could be simplified: 804.55/217.26 804.55/217.26 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes), 804.55/217.26 possible^#(x, ns, colorednodes)) 804.55/217.26 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.26 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.26 cs1, 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest), 804.55/217.26 eqColorList^#(cs1, ncs)) } 804.55/217.26 804.55/217.26 We are left with following problem, upon which TcT provides the 804.55/217.26 certificate YES(O(1),O(1)). 804.55/217.26 804.55/217.26 Strict DPs: { colornode^#(Nil(), node, colorednodes) -> c_1() } 804.55/217.26 Weak DPs: 804.55/217.26 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.26 c_2(colornode^#(ncs, x, colorednodes)) 804.55/217.26 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes)) 804.55/217.26 , colornode[Ite][True][Ite]^#(False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 node, 804.55/217.26 colorednodes) 804.55/217.26 -> c_4(colornode^#(xs, node, colorednodes)) 804.55/217.26 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.26 c_5(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.26 colornode^#(cs, x, Nil())) 804.55/217.26 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.26 c_6(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.26 cs1, 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest)) 804.55/217.26 , colorrestthetrick[Ite]^#(True(), 804.55/217.26 cs1, 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest) 804.55/217.26 -> c_7(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.26 , colorrestthetrick[Ite]^#(False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 cs, 804.55/217.26 ncs, 804.55/217.26 colorednodes, 804.55/217.26 rest) 804.55/217.26 -> c_8(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.55/217.26 Weak Trs: 804.55/217.26 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.26 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.26 color, 804.55/217.26 Cons(x, xs), 804.55/217.26 colorednodes) 804.55/217.26 , possible(color, Nil(), colorednodes) -> True() 804.55/217.26 , eqColor(NoColor(), b) -> False() 804.55/217.26 , eqColor(Blue(), NoColor()) -> False() 804.55/217.26 , eqColor(Blue(), Blue()) -> True() 804.55/217.26 , eqColor(Blue(), Red()) -> False() 804.55/217.26 , eqColor(Blue(), Yellow()) -> False() 804.55/217.26 , eqColor(Red(), NoColor()) -> False() 804.55/217.26 , eqColor(Red(), Blue()) -> False() 804.55/217.26 , eqColor(Red(), Red()) -> True() 804.55/217.26 , eqColor(Red(), Yellow()) -> False() 804.55/217.26 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.26 , eqColor(Yellow(), Blue()) -> False() 804.55/217.26 , eqColor(Yellow(), Red()) -> False() 804.55/217.26 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.26 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.26 CN(cs, node) 804.55/217.26 , colornode[Ite][True][Ite](False(), 804.55/217.26 Cons(x, xs), 804.55/217.26 node, 804.55/217.26 colorednodes) 804.55/217.26 -> colornode(xs, node, colorednodes) 804.55/217.26 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.26 , !EQ(S(x), 0()) -> False() 804.55/217.26 , !EQ(0(), S(y)) -> False() 804.55/217.26 , !EQ(0(), 0()) -> True() 804.55/217.26 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.26 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.26 Cons(x, xs), 804.55/217.26 N(n, ns), 804.55/217.26 colorednodes) 804.55/217.26 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.26 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.26 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(True(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.26 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.26 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.27 , eqColorList(Nil(), Nil()) -> True() 804.55/217.27 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.27 False() 804.55/217.27 , possible[Ite][True][Ite](False(), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes) 804.55/217.27 -> possible(color, xs, colorednodes) 804.55/217.27 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.27 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.27 node, 804.55/217.27 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.27 , colorof(node, Nil()) -> NoColor() 804.55/217.27 , colorof[Ite][True][Ite](True(), 804.55/217.27 node, 804.55/217.27 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.27 -> x 804.55/217.27 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.27 colorof(node, xs) 804.55/217.27 , and(True(), True()) -> True() 804.55/217.27 , and(True(), False()) -> False() 804.55/217.27 , and(False(), True()) -> False() 804.55/217.27 , and(False(), False()) -> False() } 804.55/217.27 Obligation: 804.55/217.27 innermost runtime complexity 804.55/217.27 Answer: 804.55/217.27 YES(O(1),O(1)) 804.55/217.27 804.55/217.27 We use the processor 'matrix interpretation of dimension 1' to 804.55/217.27 orient following rules strictly. 804.55/217.27 804.55/217.27 DPs: 804.55/217.27 { 1: colornode^#(Nil(), node, colorednodes) -> c_1() } 804.55/217.27 Trs: 804.55/217.27 { colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes) } 804.55/217.27 804.55/217.27 Sub-proof: 804.55/217.27 ---------- 804.55/217.27 The following argument positions are usable: 804.55/217.27 Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, 804.55/217.27 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1}, Uargs(c_7) = {1}, 804.55/217.27 Uargs(c_8) = {1} 804.55/217.27 804.55/217.27 TcT has computed the following constructor-restricted matrix 804.55/217.27 interpretation. Note that the diagonal of the component-wise maxima 804.55/217.27 of interpretation-entries (of constructors) contains no more than 0 804.55/217.27 non-zero entries. 804.55/217.27 804.55/217.27 [True] = [0] 804.55/217.27 804.55/217.27 [NoColor] = [0] 804.55/217.27 804.55/217.27 [possible](x1, x2, x3) = [0] 804.55/217.27 804.55/217.27 [eqColor](x1, x2) = [0] 804.55/217.27 804.55/217.27 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [7] x3 + [7] x4 + [0] 804.55/217.27 804.55/217.27 [CN](x1, x2) = [7] 804.55/217.27 804.55/217.27 [!EQ](x1, x2) = [0] 804.55/217.27 804.55/217.27 [Blue] = [0] 804.55/217.27 804.55/217.27 [Cons](x1, x2) = [1] 804.55/217.27 804.55/217.27 [colornode](x1, x2, x3) = [7] x2 + [7] x3 + [5] 804.55/217.27 804.55/217.27 [NotPossible] = [6] 804.55/217.27 804.55/217.27 [eqColorList](x1, x2) = [0] 804.55/217.27 804.55/217.27 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.55/217.27 804.55/217.27 [False] = [0] 804.55/217.27 804.55/217.27 [Red] = [0] 804.55/217.27 804.55/217.27 [colorof](x1, x2) = [7] x1 + [0] 804.55/217.27 804.55/217.27 [N](x1, x2) = [0] 804.55/217.27 804.55/217.27 [Nil] = [0] 804.55/217.27 804.55/217.27 [colorof[Ite][True][Ite]](x1, x2, x3) = [7] x2 + [0] 804.55/217.27 804.55/217.27 [and](x1, x2) = [0] 804.55/217.27 804.55/217.27 [Yellow] = [0] 804.55/217.27 804.55/217.27 [S](x1) = [0] 804.55/217.27 804.55/217.27 [0] = [0] 804.55/217.27 804.55/217.27 [colorrest^#](x1, x2, x3, x4) = [2] 804.55/217.27 804.55/217.27 [colornode^#](x1, x2, x3) = [2] 804.55/217.27 804.55/217.27 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [2] x2 + [0] 804.55/217.27 804.55/217.27 [graphcolour^#](x1, x2) = [4] x1 + [7] x2 + [7] 804.55/217.27 804.55/217.27 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [4] x4 + [2] 804.55/217.27 804.55/217.27 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [4] x5 + [2] 804.55/217.27 804.55/217.27 [c_1] = [1] 804.55/217.27 804.55/217.27 [c_2](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 [c_3](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 [c_4](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 [c_5](x1, x2) = [1] x1 + [4] x2 + [1] 804.55/217.27 804.55/217.27 [c_6](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 [c_7](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 [c_8](x1) = [1] x1 + [0] 804.55/217.27 804.55/217.27 The order satisfies the following ordering constraints: 804.55/217.27 804.55/217.27 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.55/217.27 ? [3] color + [3] colorednodes + [0] 804.55/217.27 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes)] 804.55/217.27 804.55/217.27 [possible(color, Nil(), colorednodes)] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [eqColor(NoColor(), b)] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Blue(), NoColor())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Blue(), Blue())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [eqColor(Blue(), Red())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Blue(), Yellow())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Red(), NoColor())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Red(), Blue())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Red(), Red())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [eqColor(Red(), Yellow())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Yellow(), NoColor())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Yellow(), Blue())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Yellow(), Red())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColor(Yellow(), Yellow())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [7] node + [7] colorednodes + [0] 804.55/217.27 ? [7] 804.55/217.27 = [CN(cs, node)] 804.55/217.27 804.55/217.27 [colornode[Ite][True][Ite](False(), = [7] node + [7] colorednodes + [0] 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes)] 804.55/217.27 ? [7] node + [7] colorednodes + [5] 804.55/217.27 = [colornode(xs, node, colorednodes)] 804.55/217.27 804.55/217.27 [!EQ(S(x), S(y))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [!EQ(x, y)] 804.55/217.27 804.55/217.27 [!EQ(S(x), 0())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [!EQ(0(), S(y))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [!EQ(0(), 0())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [7] colorednodes + [5] 804.55/217.27 > [7] colorednodes + [0] 804.55/217.27 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes)] 804.55/217.27 804.55/217.27 [colornode(Nil(), node, colorednodes)] = [7] node + [7] colorednodes + [5] 804.55/217.27 ? [6] 804.55/217.27 = [NotPossible()] 804.55/217.27 804.55/217.27 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(True(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(True(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(False(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [and(True(), eqColorList(cs1, cs2))] 804.55/217.27 804.55/217.27 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [eqColorList(Nil(), Nil())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes)] 804.55/217.27 >= [0] 804.55/217.27 = [possible(color, xs, colorednodes)] 804.55/217.27 804.55/217.27 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [7] node + [0] 804.55/217.27 >= [7] node + [0] 804.55/217.27 = [colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.27 node, 804.55/217.27 Cons(CN(cl, N(name, adjs)), xs))] 804.55/217.27 804.55/217.27 [colorof(node, Nil())] = [7] node + [0] 804.55/217.27 >= [0] 804.55/217.27 = [NoColor()] 804.55/217.27 804.55/217.27 [colorof[Ite][True][Ite](True(), = [7] node + [0] 804.55/217.27 node, 804.55/217.27 Cons(CN(Cons(x, xs), n), xs'))] 804.55/217.27 ? [1] x + [0] 804.55/217.27 = [x] 804.55/217.27 804.55/217.27 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [7] node + [0] 804.55/217.27 >= [7] node + [0] 804.55/217.27 = [colorof(node, xs)] 804.55/217.27 804.55/217.27 [and(True(), True())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [True()] 804.55/217.27 804.55/217.27 [and(True(), False())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [and(False(), True())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [and(False(), False())] = [0] 804.55/217.27 >= [0] 804.55/217.27 = [False()] 804.55/217.27 804.55/217.27 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [2] 804.55/217.27 >= [2] 804.55/217.27 = [c_2(colornode^#(ncs, x, colorednodes))] 804.55/217.27 804.55/217.27 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [2] 804.55/217.27 >= [2] 804.55/217.27 = [c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes))] 804.55/217.27 804.55/217.27 [colornode^#(Nil(), node, colorednodes)] = [2] 804.55/217.27 > [1] 804.55/217.27 = [c_1()] 804.55/217.27 804.55/217.27 [colornode[Ite][True][Ite]^#(False(), = [2] 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes)] 804.55/217.27 >= [2] 804.55/217.27 = [c_4(colornode^#(xs, node, colorednodes))] 804.55/217.27 804.55/217.27 [graphcolour^#(Cons(x, xs), cs)] = [7] cs + [11] 804.55/217.27 >= [11] 804.55/217.27 = [c_5(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.27 colornode^#(cs, x, Nil()))] 804.55/217.27 804.55/217.27 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [4] colorednodes + [2] 804.55/217.27 >= [4] colorednodes + [2] 804.55/217.27 = [c_6(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest))] 804.55/217.27 804.55/217.27 [colorrestthetrick[Ite]^#(True(), = [4] colorednodes + [2] 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest)] 804.55/217.27 >= [2] 804.55/217.27 = [c_7(colorrest^#(cs, cs1, colorednodes, rest))] 804.55/217.27 804.55/217.27 [colorrestthetrick[Ite]^#(False(), = [4] colorednodes + [2] 804.55/217.27 Cons(x, xs), 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest)] 804.55/217.27 >= [4] colorednodes + [2] 804.55/217.27 = [c_8(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 804.55/217.27 804.55/217.27 804.55/217.27 We return to the main proof. Consider the set of all dependency 804.55/217.27 pairs 804.55/217.27 804.55/217.27 : 804.55/217.27 { 1: colornode^#(Nil(), node, colorednodes) -> c_1() 804.55/217.27 , 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.27 c_2(colornode^#(ncs, x, colorednodes)) 804.55/217.27 , 3: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes)) 804.55/217.27 , 4: colornode[Ite][True][Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes) 804.55/217.27 -> c_4(colornode^#(xs, node, colorednodes)) 804.55/217.27 , 5: graphcolour^#(Cons(x, xs), cs) -> 804.55/217.27 c_5(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.27 colornode^#(cs, x, Nil())) 804.55/217.27 , 6: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.27 c_6(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest)) 804.55/217.27 , 7: colorrestthetrick[Ite]^#(True(), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_7(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.27 , 8: colorrestthetrick[Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_8(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.55/217.27 804.55/217.27 Processor 'matrix interpretation of dimension 1' induces the 804.55/217.27 complexity certificate YES(?,O(1)) on application of dependency 804.55/217.27 pairs {1}. These cover all (indirect) predecessors of dependency 804.55/217.27 pairs {1,5}, their number of application is equally bounded. The 804.55/217.27 dependency pairs are shifted into the weak component. 804.55/217.27 804.55/217.27 We are left with following problem, upon which TcT provides the 804.55/217.27 certificate YES(O(1),O(1)). 804.55/217.27 804.55/217.27 Weak DPs: 804.55/217.27 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.27 c_2(colornode^#(ncs, x, colorednodes)) 804.55/217.27 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes)) 804.55/217.27 , colornode^#(Nil(), node, colorednodes) -> c_1() 804.55/217.27 , colornode[Ite][True][Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes) 804.55/217.27 -> c_4(colornode^#(xs, node, colorednodes)) 804.55/217.27 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.27 c_5(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.27 colornode^#(cs, x, Nil())) 804.55/217.27 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.27 c_6(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest)) 804.55/217.27 , colorrestthetrick[Ite]^#(True(), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_7(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.27 , colorrestthetrick[Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_8(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.55/217.27 Weak Trs: 804.55/217.27 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.27 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes) 804.55/217.27 , possible(color, Nil(), colorednodes) -> True() 804.55/217.27 , eqColor(NoColor(), b) -> False() 804.55/217.27 , eqColor(Blue(), NoColor()) -> False() 804.55/217.27 , eqColor(Blue(), Blue()) -> True() 804.55/217.27 , eqColor(Blue(), Red()) -> False() 804.55/217.27 , eqColor(Blue(), Yellow()) -> False() 804.55/217.27 , eqColor(Red(), NoColor()) -> False() 804.55/217.27 , eqColor(Red(), Blue()) -> False() 804.55/217.27 , eqColor(Red(), Red()) -> True() 804.55/217.27 , eqColor(Red(), Yellow()) -> False() 804.55/217.27 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.27 , eqColor(Yellow(), Blue()) -> False() 804.55/217.27 , eqColor(Yellow(), Red()) -> False() 804.55/217.27 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.27 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.27 CN(cs, node) 804.55/217.27 , colornode[Ite][True][Ite](False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes) 804.55/217.27 -> colornode(xs, node, colorednodes) 804.55/217.27 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.27 , !EQ(S(x), 0()) -> False() 804.55/217.27 , !EQ(0(), S(y)) -> False() 804.55/217.27 , !EQ(0(), 0()) -> True() 804.55/217.27 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes) 804.55/217.27 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.27 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.27 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.27 , eqColorList(Nil(), Nil()) -> True() 804.55/217.27 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.27 False() 804.55/217.27 , possible[Ite][True][Ite](False(), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes) 804.55/217.27 -> possible(color, xs, colorednodes) 804.55/217.27 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.27 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.27 node, 804.55/217.27 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.27 , colorof(node, Nil()) -> NoColor() 804.55/217.27 , colorof[Ite][True][Ite](True(), 804.55/217.27 node, 804.55/217.27 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.27 -> x 804.55/217.27 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.27 colorof(node, xs) 804.55/217.27 , and(True(), True()) -> True() 804.55/217.27 , and(True(), False()) -> False() 804.55/217.27 , and(False(), True()) -> False() 804.55/217.27 , and(False(), False()) -> False() } 804.55/217.27 Obligation: 804.55/217.27 innermost runtime complexity 804.55/217.27 Answer: 804.55/217.27 YES(O(1),O(1)) 804.55/217.27 804.55/217.27 The following weak DPs constitute a sub-graph of the DG that is 804.55/217.27 closed under successors. The DPs are removed. 804.55/217.27 804.55/217.27 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.27 c_2(colornode^#(ncs, x, colorednodes)) 804.55/217.27 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes)) 804.55/217.27 , colornode^#(Nil(), node, colorednodes) -> c_1() 804.55/217.27 , colornode[Ite][True][Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes) 804.55/217.27 -> c_4(colornode^#(xs, node, colorednodes)) 804.55/217.27 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.27 c_5(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.27 colornode^#(cs, x, Nil())) 804.55/217.27 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.27 c_6(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest)) 804.55/217.27 , colorrestthetrick[Ite]^#(True(), 804.55/217.27 cs1, 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_7(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.27 , colorrestthetrick[Ite]^#(False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 cs, 804.55/217.27 ncs, 804.55/217.27 colorednodes, 804.55/217.27 rest) 804.55/217.27 -> c_8(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.55/217.27 804.55/217.27 We are left with following problem, upon which TcT provides the 804.55/217.27 certificate YES(O(1),O(1)). 804.55/217.27 804.55/217.27 Weak Trs: 804.55/217.27 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.27 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes) 804.55/217.27 , possible(color, Nil(), colorednodes) -> True() 804.55/217.27 , eqColor(NoColor(), b) -> False() 804.55/217.27 , eqColor(Blue(), NoColor()) -> False() 804.55/217.27 , eqColor(Blue(), Blue()) -> True() 804.55/217.27 , eqColor(Blue(), Red()) -> False() 804.55/217.27 , eqColor(Blue(), Yellow()) -> False() 804.55/217.27 , eqColor(Red(), NoColor()) -> False() 804.55/217.27 , eqColor(Red(), Blue()) -> False() 804.55/217.27 , eqColor(Red(), Red()) -> True() 804.55/217.27 , eqColor(Red(), Yellow()) -> False() 804.55/217.27 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.27 , eqColor(Yellow(), Blue()) -> False() 804.55/217.27 , eqColor(Yellow(), Red()) -> False() 804.55/217.27 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.27 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.27 CN(cs, node) 804.55/217.27 , colornode[Ite][True][Ite](False(), 804.55/217.27 Cons(x, xs), 804.55/217.27 node, 804.55/217.27 colorednodes) 804.55/217.27 -> colornode(xs, node, colorednodes) 804.55/217.27 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.27 , !EQ(S(x), 0()) -> False() 804.55/217.27 , !EQ(0(), S(y)) -> False() 804.55/217.27 , !EQ(0(), 0()) -> True() 804.55/217.27 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.27 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.27 Cons(x, xs), 804.55/217.27 N(n, ns), 804.55/217.27 colorednodes) 804.55/217.27 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.27 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.27 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.27 and(False(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.27 and(True(), eqColorList(cs1, cs2)) 804.55/217.27 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.27 , eqColorList(Nil(), Nil()) -> True() 804.55/217.27 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.27 False() 804.55/217.27 , possible[Ite][True][Ite](False(), 804.55/217.27 color, 804.55/217.27 Cons(x, xs), 804.55/217.27 colorednodes) 804.55/217.27 -> possible(color, xs, colorednodes) 804.55/217.27 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.27 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.27 node, 804.55/217.27 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.27 , colorof(node, Nil()) -> NoColor() 804.55/217.27 , colorof[Ite][True][Ite](True(), 804.55/217.27 node, 804.55/217.27 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.27 -> x 804.55/217.27 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.28 colorof(node, xs) 804.55/217.28 , and(True(), True()) -> True() 804.55/217.28 , and(True(), False()) -> False() 804.55/217.28 , and(False(), True()) -> False() 804.55/217.28 , and(False(), False()) -> False() } 804.55/217.28 Obligation: 804.55/217.28 innermost runtime complexity 804.55/217.28 Answer: 804.55/217.28 YES(O(1),O(1)) 804.55/217.28 804.55/217.28 No rule is usable, rules are removed from the input problem. 804.55/217.28 804.55/217.28 We are left with following problem, upon which TcT provides the 804.55/217.28 certificate YES(O(1),O(1)). 804.55/217.28 804.55/217.28 Rules: Empty 804.55/217.28 Obligation: 804.55/217.28 innermost runtime complexity 804.55/217.28 Answer: 804.55/217.28 YES(O(1),O(1)) 804.55/217.28 804.55/217.28 Empty rules are trivially bounded 804.55/217.28 804.55/217.28 S) We are left with following problem, upon which TcT provides the 804.55/217.28 certificate YES(O(1),POLY). 804.55/217.28 804.55/217.28 Strict DPs: 804.55/217.28 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.28 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.28 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.28 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.28 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.28 Cons(x, xs), 804.55/217.28 N(n, ns), 804.55/217.28 colorednodes), 804.55/217.28 possible^#(x, ns, colorednodes)) 804.55/217.28 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.28 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.28 colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes), 804.55/217.28 colorof^#(x, colorednodes)) 804.55/217.28 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.28 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.28 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.28 node, 804.55/217.28 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.28 , colorof^#(node, Nil()) -> c_8() 804.55/217.28 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.28 c_9(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_10(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_11(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_12(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_13(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_14(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_15(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_16(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_17(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_18(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_19(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_20(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_21(eqColorList^#(cs1, cs2)) 804.55/217.28 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.28 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest), 804.55/217.28 eqColorList^#(cs1, ncs)) } 804.55/217.28 Weak DPs: 804.55/217.28 { colornode^#(Nil(), node, colorednodes) -> c_4() 804.55/217.28 , possible[Ite][True][Ite]^#(False(), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.28 , colornode[Ite][True][Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 node, 804.55/217.28 colorednodes) 804.55/217.28 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.28 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.28 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.28 colornode^#(cs, x, Nil())) 804.55/217.28 , colorrestthetrick[Ite]^#(True(), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.28 , colorrestthetrick[Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.28 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.28 c_28(colorof^#(node, xs)) } 804.55/217.28 Weak Trs: 804.55/217.28 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.28 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 , possible(color, Nil(), colorednodes) -> True() 804.55/217.28 , eqColor(NoColor(), b) -> False() 804.55/217.28 , eqColor(Blue(), NoColor()) -> False() 804.55/217.28 , eqColor(Blue(), Blue()) -> True() 804.55/217.28 , eqColor(Blue(), Red()) -> False() 804.55/217.28 , eqColor(Blue(), Yellow()) -> False() 804.55/217.28 , eqColor(Red(), NoColor()) -> False() 804.55/217.28 , eqColor(Red(), Blue()) -> False() 804.55/217.28 , eqColor(Red(), Red()) -> True() 804.55/217.28 , eqColor(Red(), Yellow()) -> False() 804.55/217.28 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.28 , eqColor(Yellow(), Blue()) -> False() 804.55/217.28 , eqColor(Yellow(), Red()) -> False() 804.55/217.28 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.28 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.28 CN(cs, node) 804.55/217.28 , colornode[Ite][True][Ite](False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 node, 804.55/217.28 colorednodes) 804.55/217.28 -> colornode(xs, node, colorednodes) 804.55/217.28 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.28 , !EQ(S(x), 0()) -> False() 804.55/217.28 , !EQ(0(), S(y)) -> False() 804.55/217.28 , !EQ(0(), 0()) -> True() 804.55/217.28 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.28 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.28 Cons(x, xs), 804.55/217.28 N(n, ns), 804.55/217.28 colorednodes) 804.55/217.28 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.28 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.28 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.28 , eqColorList(Nil(), Nil()) -> True() 804.55/217.28 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.28 False() 804.55/217.28 , possible[Ite][True][Ite](False(), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 -> possible(color, xs, colorednodes) 804.55/217.28 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.28 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.28 node, 804.55/217.28 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.28 , colorof(node, Nil()) -> NoColor() 804.55/217.28 , colorof[Ite][True][Ite](True(), 804.55/217.28 node, 804.55/217.28 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.28 -> x 804.55/217.28 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.28 colorof(node, xs) 804.55/217.28 , and(True(), True()) -> True() 804.55/217.28 , and(True(), False()) -> False() 804.55/217.28 , and(False(), True()) -> False() 804.55/217.28 , and(False(), False()) -> False() } 804.55/217.28 Obligation: 804.55/217.28 innermost runtime complexity 804.55/217.28 Answer: 804.55/217.28 YES(O(1),POLY) 804.55/217.28 804.55/217.28 The following weak DPs constitute a sub-graph of the DG that is 804.55/217.28 closed under successors. The DPs are removed. 804.55/217.28 804.55/217.28 { colornode^#(Nil(), node, colorednodes) -> c_4() } 804.55/217.28 804.55/217.28 We are left with following problem, upon which TcT provides the 804.55/217.28 certificate YES(O(1),POLY). 804.55/217.28 804.55/217.28 Strict DPs: 804.55/217.28 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.28 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.28 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.28 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.28 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.28 Cons(x, xs), 804.55/217.28 N(n, ns), 804.55/217.28 colorednodes), 804.55/217.28 possible^#(x, ns, colorednodes)) 804.55/217.28 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.28 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.28 colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes), 804.55/217.28 colorof^#(x, colorednodes)) 804.55/217.28 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.28 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.28 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.28 node, 804.55/217.28 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.28 , colorof^#(node, Nil()) -> c_8() 804.55/217.28 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.28 c_9(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_10(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_11(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_12(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_13(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_14(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_15(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_16(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_17(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_18(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_19(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_20(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_21(eqColorList^#(cs1, cs2)) 804.55/217.28 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.28 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest), 804.55/217.28 eqColorList^#(cs1, ncs)) } 804.55/217.28 Weak DPs: 804.55/217.28 { possible[Ite][True][Ite]^#(False(), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.28 , colornode[Ite][True][Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 node, 804.55/217.28 colorednodes) 804.55/217.28 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.28 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.28 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.28 colornode^#(cs, x, Nil())) 804.55/217.28 , colorrestthetrick[Ite]^#(True(), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.28 , colorrestthetrick[Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.28 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.28 c_28(colorof^#(node, xs)) } 804.55/217.28 Weak Trs: 804.55/217.28 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.28 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 , possible(color, Nil(), colorednodes) -> True() 804.55/217.28 , eqColor(NoColor(), b) -> False() 804.55/217.28 , eqColor(Blue(), NoColor()) -> False() 804.55/217.28 , eqColor(Blue(), Blue()) -> True() 804.55/217.28 , eqColor(Blue(), Red()) -> False() 804.55/217.28 , eqColor(Blue(), Yellow()) -> False() 804.55/217.28 , eqColor(Red(), NoColor()) -> False() 804.55/217.28 , eqColor(Red(), Blue()) -> False() 804.55/217.28 , eqColor(Red(), Red()) -> True() 804.55/217.28 , eqColor(Red(), Yellow()) -> False() 804.55/217.28 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.28 , eqColor(Yellow(), Blue()) -> False() 804.55/217.28 , eqColor(Yellow(), Red()) -> False() 804.55/217.28 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.28 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.28 CN(cs, node) 804.55/217.28 , colornode[Ite][True][Ite](False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 node, 804.55/217.28 colorednodes) 804.55/217.28 -> colornode(xs, node, colorednodes) 804.55/217.28 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.28 , !EQ(S(x), 0()) -> False() 804.55/217.28 , !EQ(0(), S(y)) -> False() 804.55/217.28 , !EQ(0(), 0()) -> True() 804.55/217.28 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.28 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.28 Cons(x, xs), 804.55/217.28 N(n, ns), 804.55/217.28 colorednodes) 804.55/217.28 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.28 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.28 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 and(False(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 and(True(), eqColorList(cs1, cs2)) 804.55/217.28 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.28 , eqColorList(Nil(), Nil()) -> True() 804.55/217.28 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.28 False() 804.55/217.28 , possible[Ite][True][Ite](False(), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 -> possible(color, xs, colorednodes) 804.55/217.28 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.28 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.28 node, 804.55/217.28 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.28 , colorof(node, Nil()) -> NoColor() 804.55/217.28 , colorof[Ite][True][Ite](True(), 804.55/217.28 node, 804.55/217.28 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.28 -> x 804.55/217.28 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.28 colorof(node, xs) 804.55/217.28 , and(True(), True()) -> True() 804.55/217.28 , and(True(), False()) -> False() 804.55/217.28 , and(False(), True()) -> False() 804.55/217.28 , and(False(), False()) -> False() } 804.55/217.28 Obligation: 804.55/217.28 innermost runtime complexity 804.55/217.28 Answer: 804.55/217.28 YES(O(1),POLY) 804.55/217.28 804.55/217.28 We analyse the complexity of following sub-problems (R) and (S). 804.55/217.28 Problem (S) is obtained from the input problem by shifting strict 804.55/217.28 rules from (R) into the weak component: 804.55/217.28 804.55/217.28 Problem (R): 804.55/217.28 ------------ 804.55/217.28 Strict DPs: 804.55/217.28 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.28 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.28 Cons(x, xs), 804.55/217.28 N(n, ns), 804.55/217.28 colorednodes), 804.55/217.28 possible^#(x, ns, colorednodes)) 804.55/217.28 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.28 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.28 colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes), 804.55/217.28 colorof^#(x, colorednodes)) 804.55/217.28 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.28 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.28 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.28 node, 804.55/217.28 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.28 , colorof^#(node, Nil()) -> c_8() } 804.55/217.28 Weak DPs: 804.55/217.28 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.28 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.28 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.28 , possible[Ite][True][Ite]^#(False(), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.28 , colornode[Ite][True][Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 node, 804.55/217.28 colorednodes) 804.55/217.28 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.28 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.28 c_9(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_10(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_11(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_12(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_13(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_14(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_15(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_16(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_17(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.28 c_18(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.28 c_19(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.28 c_20(eqColorList^#(cs1, cs2)) 804.55/217.28 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.28 c_21(eqColorList^#(cs1, cs2)) 804.55/217.28 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.28 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.28 colornode^#(cs, x, Nil())) 804.55/217.28 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.28 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest), 804.55/217.28 eqColorList^#(cs1, ncs)) 804.55/217.28 , colorrestthetrick[Ite]^#(True(), 804.55/217.28 cs1, 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.28 , colorrestthetrick[Ite]^#(False(), 804.55/217.28 Cons(x, xs), 804.55/217.28 cs, 804.55/217.28 ncs, 804.55/217.28 colorednodes, 804.55/217.28 rest) 804.55/217.28 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.28 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.28 c_28(colorof^#(node, xs)) } 804.55/217.28 Weak Trs: 804.55/217.28 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.28 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.28 color, 804.55/217.28 Cons(x, xs), 804.55/217.28 colorednodes) 804.55/217.28 , possible(color, Nil(), colorednodes) -> True() 804.55/217.28 , eqColor(NoColor(), b) -> False() 804.55/217.28 , eqColor(Blue(), NoColor()) -> False() 804.55/217.29 , eqColor(Blue(), Blue()) -> True() 804.55/217.29 , eqColor(Blue(), Red()) -> False() 804.55/217.29 , eqColor(Blue(), Yellow()) -> False() 804.55/217.29 , eqColor(Red(), NoColor()) -> False() 804.55/217.29 , eqColor(Red(), Blue()) -> False() 804.55/217.29 , eqColor(Red(), Red()) -> True() 804.55/217.29 , eqColor(Red(), Yellow()) -> False() 804.55/217.29 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.29 , eqColor(Yellow(), Blue()) -> False() 804.55/217.29 , eqColor(Yellow(), Red()) -> False() 804.55/217.29 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.29 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.29 CN(cs, node) 804.55/217.29 , colornode[Ite][True][Ite](False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 node, 804.55/217.29 colorednodes) 804.55/217.29 -> colornode(xs, node, colorednodes) 804.55/217.29 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.29 , !EQ(S(x), 0()) -> False() 804.55/217.29 , !EQ(0(), S(y)) -> False() 804.55/217.29 , !EQ(0(), 0()) -> True() 804.55/217.29 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.29 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.29 Cons(x, xs), 804.55/217.29 N(n, ns), 804.55/217.29 colorednodes) 804.55/217.29 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.29 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.29 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.29 , eqColorList(Nil(), Nil()) -> True() 804.55/217.29 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.29 False() 804.55/217.29 , possible[Ite][True][Ite](False(), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 -> possible(color, xs, colorednodes) 804.55/217.29 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.29 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.29 node, 804.55/217.29 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.29 , colorof(node, Nil()) -> NoColor() 804.55/217.29 , colorof[Ite][True][Ite](True(), 804.55/217.29 node, 804.55/217.29 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.29 -> x 804.55/217.29 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.29 colorof(node, xs) 804.55/217.29 , and(True(), True()) -> True() 804.55/217.29 , and(True(), False()) -> False() 804.55/217.29 , and(False(), True()) -> False() 804.55/217.29 , and(False(), False()) -> False() } 804.55/217.29 StartTerms: basic terms 804.55/217.29 Strategy: innermost 804.55/217.29 804.55/217.29 Problem (S): 804.55/217.29 ------------ 804.55/217.29 Strict DPs: 804.55/217.29 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.29 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.29 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.29 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 c_9(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_10(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_11(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_12(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_13(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_14(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_15(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_16(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_17(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_18(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_19(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_20(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_21(eqColorList^#(cs1, cs2)) 804.55/217.29 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.29 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.29 cs1, 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest), 804.55/217.29 eqColorList^#(cs1, ncs)) } 804.55/217.29 Weak DPs: 804.55/217.29 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.29 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.29 Cons(x, xs), 804.55/217.29 N(n, ns), 804.55/217.29 colorednodes), 804.55/217.29 possible^#(x, ns, colorednodes)) 804.55/217.29 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.29 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.29 colorof(x, colorednodes)), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes), 804.55/217.29 colorof^#(x, colorednodes)) 804.55/217.29 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.29 , possible[Ite][True][Ite]^#(False(), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.29 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.29 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.29 node, 804.55/217.29 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.29 , colorof^#(node, Nil()) -> c_8() 804.55/217.29 , colornode[Ite][True][Ite]^#(False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 node, 804.55/217.29 colorednodes) 804.55/217.29 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.29 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.29 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.29 colornode^#(cs, x, Nil())) 804.55/217.29 , colorrestthetrick[Ite]^#(True(), 804.55/217.29 cs1, 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest) 804.55/217.29 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.29 , colorrestthetrick[Ite]^#(False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest) 804.55/217.29 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.29 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.29 c_28(colorof^#(node, xs)) } 804.55/217.29 Weak Trs: 804.55/217.29 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.29 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 , possible(color, Nil(), colorednodes) -> True() 804.55/217.29 , eqColor(NoColor(), b) -> False() 804.55/217.29 , eqColor(Blue(), NoColor()) -> False() 804.55/217.29 , eqColor(Blue(), Blue()) -> True() 804.55/217.29 , eqColor(Blue(), Red()) -> False() 804.55/217.29 , eqColor(Blue(), Yellow()) -> False() 804.55/217.29 , eqColor(Red(), NoColor()) -> False() 804.55/217.29 , eqColor(Red(), Blue()) -> False() 804.55/217.29 , eqColor(Red(), Red()) -> True() 804.55/217.29 , eqColor(Red(), Yellow()) -> False() 804.55/217.29 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.29 , eqColor(Yellow(), Blue()) -> False() 804.55/217.29 , eqColor(Yellow(), Red()) -> False() 804.55/217.29 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.29 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.29 CN(cs, node) 804.55/217.29 , colornode[Ite][True][Ite](False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 node, 804.55/217.29 colorednodes) 804.55/217.29 -> colornode(xs, node, colorednodes) 804.55/217.29 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.29 , !EQ(S(x), 0()) -> False() 804.55/217.29 , !EQ(0(), S(y)) -> False() 804.55/217.29 , !EQ(0(), 0()) -> True() 804.55/217.29 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.29 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.29 Cons(x, xs), 804.55/217.29 N(n, ns), 804.55/217.29 colorednodes) 804.55/217.29 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.29 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.29 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.29 , eqColorList(Nil(), Nil()) -> True() 804.55/217.29 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.29 False() 804.55/217.29 , possible[Ite][True][Ite](False(), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 -> possible(color, xs, colorednodes) 804.55/217.29 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.29 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.29 node, 804.55/217.29 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.29 , colorof(node, Nil()) -> NoColor() 804.55/217.29 , colorof[Ite][True][Ite](True(), 804.55/217.29 node, 804.55/217.29 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.29 -> x 804.55/217.29 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.29 colorof(node, xs) 804.55/217.29 , and(True(), True()) -> True() 804.55/217.29 , and(True(), False()) -> False() 804.55/217.29 , and(False(), True()) -> False() 804.55/217.29 , and(False(), False()) -> False() } 804.55/217.29 StartTerms: basic terms 804.55/217.29 Strategy: innermost 804.55/217.29 804.55/217.29 Overall, the transformation results in the following sub-problem(s): 804.55/217.29 804.55/217.29 Generated new problems: 804.55/217.29 ----------------------- 804.55/217.29 R) Strict DPs: 804.55/217.29 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.29 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.55/217.29 Cons(x, xs), 804.55/217.29 N(n, ns), 804.55/217.29 colorednodes), 804.55/217.29 possible^#(x, ns, colorednodes)) 804.55/217.29 , possible^#(color, Cons(x, xs), colorednodes) -> 804.55/217.29 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.55/217.29 colorof(x, colorednodes)), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes), 804.55/217.29 colorof^#(x, colorednodes)) 804.55/217.29 , possible^#(color, Nil(), colorednodes) -> c_6() 804.55/217.29 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.29 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.55/217.29 node, 804.55/217.29 Cons(CN(cl, N(name, adjs)), xs))) 804.55/217.29 , colorof^#(node, Nil()) -> c_8() } 804.55/217.29 Weak DPs: 804.55/217.29 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.29 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.29 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.29 , possible[Ite][True][Ite]^#(False(), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 -> c_23(possible^#(color, xs, colorednodes)) 804.55/217.29 , colornode[Ite][True][Ite]^#(False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 node, 804.55/217.29 colorednodes) 804.55/217.29 -> c_24(colornode^#(xs, node, colorednodes)) 804.55/217.29 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 c_9(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_10(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_11(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_12(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_13(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_14(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_15(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_16(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_17(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_18(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_19(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_20(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_21(eqColorList^#(cs1, cs2)) 804.55/217.29 , graphcolour^#(Cons(x, xs), cs) -> 804.55/217.29 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.55/217.29 colornode^#(cs, x, Nil())) 804.55/217.29 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.55/217.29 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.55/217.29 cs1, 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest), 804.55/217.29 eqColorList^#(cs1, ncs)) 804.55/217.29 , colorrestthetrick[Ite]^#(True(), 804.55/217.29 cs1, 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest) 804.55/217.29 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.55/217.29 , colorrestthetrick[Ite]^#(False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 cs, 804.55/217.29 ncs, 804.55/217.29 colorednodes, 804.55/217.29 rest) 804.55/217.29 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.55/217.29 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.55/217.29 c_28(colorof^#(node, xs)) } 804.55/217.29 Weak Trs: 804.55/217.29 { possible(color, Cons(x, xs), colorednodes) -> 804.55/217.29 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 , possible(color, Nil(), colorednodes) -> True() 804.55/217.29 , eqColor(NoColor(), b) -> False() 804.55/217.29 , eqColor(Blue(), NoColor()) -> False() 804.55/217.29 , eqColor(Blue(), Blue()) -> True() 804.55/217.29 , eqColor(Blue(), Red()) -> False() 804.55/217.29 , eqColor(Blue(), Yellow()) -> False() 804.55/217.29 , eqColor(Red(), NoColor()) -> False() 804.55/217.29 , eqColor(Red(), Blue()) -> False() 804.55/217.29 , eqColor(Red(), Red()) -> True() 804.55/217.29 , eqColor(Red(), Yellow()) -> False() 804.55/217.29 , eqColor(Yellow(), NoColor()) -> False() 804.55/217.29 , eqColor(Yellow(), Blue()) -> False() 804.55/217.29 , eqColor(Yellow(), Red()) -> False() 804.55/217.29 , eqColor(Yellow(), Yellow()) -> True() 804.55/217.29 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.55/217.29 CN(cs, node) 804.55/217.29 , colornode[Ite][True][Ite](False(), 804.55/217.29 Cons(x, xs), 804.55/217.29 node, 804.55/217.29 colorednodes) 804.55/217.29 -> colornode(xs, node, colorednodes) 804.55/217.29 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.55/217.29 , !EQ(S(x), 0()) -> False() 804.55/217.29 , !EQ(0(), S(y)) -> False() 804.55/217.29 , !EQ(0(), 0()) -> True() 804.55/217.29 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.55/217.29 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.55/217.29 Cons(x, xs), 804.55/217.29 N(n, ns), 804.55/217.29 colorednodes) 804.55/217.29 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.55/217.29 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.55/217.29 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 and(False(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 and(True(), eqColorList(cs1, cs2)) 804.55/217.29 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.55/217.29 , eqColorList(Nil(), Nil()) -> True() 804.55/217.29 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.55/217.29 False() 804.55/217.29 , possible[Ite][True][Ite](False(), 804.55/217.29 color, 804.55/217.29 Cons(x, xs), 804.55/217.29 colorednodes) 804.55/217.29 -> possible(color, xs, colorednodes) 804.55/217.29 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.55/217.29 colorof[Ite][True][Ite](!EQ(name, node), 804.55/217.29 node, 804.55/217.29 Cons(CN(cl, N(name, adjs)), xs)) 804.55/217.29 , colorof(node, Nil()) -> NoColor() 804.55/217.29 , colorof[Ite][True][Ite](True(), 804.55/217.29 node, 804.55/217.29 Cons(CN(Cons(x, xs), n), xs')) 804.55/217.29 -> x 804.55/217.29 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.55/217.29 colorof(node, xs) 804.55/217.29 , and(True(), True()) -> True() 804.55/217.29 , and(True(), False()) -> False() 804.55/217.29 , and(False(), True()) -> False() 804.55/217.29 , and(False(), False()) -> False() } 804.55/217.29 StartTerms: basic terms 804.55/217.29 Strategy: innermost 804.55/217.29 804.55/217.29 This problem was proven YES(O(1),O(n^3)). 804.55/217.29 804.55/217.29 S) Strict DPs: 804.55/217.29 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.55/217.29 c_1(colornode^#(ncs, x, colorednodes)) 804.55/217.29 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.55/217.29 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.55/217.29 c_9(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_10(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_11(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_12(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_13(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.55/217.29 c_14(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.55/217.29 c_15(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.55/217.29 c_16(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.55/217.29 c_17(eqColorList^#(cs1, cs2)) 804.55/217.29 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 c_18(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 c_19(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 c_20(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 c_21(eqColorList^#(cs1, cs2)) 804.82/217.30 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.30 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.30 cs1, 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest), 804.82/217.30 eqColorList^#(cs1, ncs)) } 804.82/217.30 Weak DPs: 804.82/217.30 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.30 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.30 Cons(x, xs), 804.82/217.30 N(n, ns), 804.82/217.30 colorednodes), 804.82/217.30 possible^#(x, ns, colorednodes)) 804.82/217.30 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.30 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.30 colorof(x, colorednodes)), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes), 804.82/217.30 colorof^#(x, colorednodes)) 804.82/217.30 , possible^#(color, Nil(), colorednodes) -> c_6() 804.82/217.30 , possible[Ite][True][Ite]^#(False(), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 -> c_23(possible^#(color, xs, colorednodes)) 804.82/217.30 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.30 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.30 node, 804.82/217.30 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.30 , colorof^#(node, Nil()) -> c_8() 804.82/217.30 , colornode[Ite][True][Ite]^#(False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 node, 804.82/217.30 colorednodes) 804.82/217.30 -> c_24(colornode^#(xs, node, colorednodes)) 804.82/217.30 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.30 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.30 colornode^#(cs, x, Nil())) 804.82/217.30 , colorrestthetrick[Ite]^#(True(), 804.82/217.30 cs1, 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest) 804.82/217.30 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.30 , colorrestthetrick[Ite]^#(False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest) 804.82/217.30 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.30 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.30 c_28(colorof^#(node, xs)) } 804.82/217.30 Weak Trs: 804.82/217.30 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.30 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 , possible(color, Nil(), colorednodes) -> True() 804.82/217.30 , eqColor(NoColor(), b) -> False() 804.82/217.30 , eqColor(Blue(), NoColor()) -> False() 804.82/217.30 , eqColor(Blue(), Blue()) -> True() 804.82/217.30 , eqColor(Blue(), Red()) -> False() 804.82/217.30 , eqColor(Blue(), Yellow()) -> False() 804.82/217.30 , eqColor(Red(), NoColor()) -> False() 804.82/217.30 , eqColor(Red(), Blue()) -> False() 804.82/217.30 , eqColor(Red(), Red()) -> True() 804.82/217.30 , eqColor(Red(), Yellow()) -> False() 804.82/217.30 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.30 , eqColor(Yellow(), Blue()) -> False() 804.82/217.30 , eqColor(Yellow(), Red()) -> False() 804.82/217.30 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.30 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.30 CN(cs, node) 804.82/217.30 , colornode[Ite][True][Ite](False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 node, 804.82/217.30 colorednodes) 804.82/217.30 -> colornode(xs, node, colorednodes) 804.82/217.30 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.30 , !EQ(S(x), 0()) -> False() 804.82/217.30 , !EQ(0(), S(y)) -> False() 804.82/217.30 , !EQ(0(), 0()) -> True() 804.82/217.30 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.30 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.30 Cons(x, xs), 804.82/217.30 N(n, ns), 804.82/217.30 colorednodes) 804.82/217.30 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.30 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.30 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.30 , eqColorList(Nil(), Nil()) -> True() 804.82/217.30 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.30 False() 804.82/217.30 , possible[Ite][True][Ite](False(), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 -> possible(color, xs, colorednodes) 804.82/217.30 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.30 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.30 node, 804.82/217.30 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.30 , colorof(node, Nil()) -> NoColor() 804.82/217.30 , colorof[Ite][True][Ite](True(), 804.82/217.30 node, 804.82/217.30 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.30 -> x 804.82/217.30 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.30 colorof(node, xs) 804.82/217.30 , and(True(), True()) -> True() 804.82/217.30 , and(True(), False()) -> False() 804.82/217.30 , and(False(), True()) -> False() 804.82/217.30 , and(False(), False()) -> False() } 804.82/217.30 StartTerms: basic terms 804.82/217.30 Strategy: innermost 804.82/217.30 804.82/217.30 This problem was proven YES(O(1),POLY). 804.82/217.30 804.82/217.30 804.82/217.30 Proofs for generated problems: 804.82/217.30 ------------------------------ 804.82/217.30 R) We are left with following problem, upon which TcT provides the 804.82/217.30 certificate YES(O(1),O(n^3)). 804.82/217.30 804.82/217.30 Strict DPs: 804.82/217.30 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.30 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.30 Cons(x, xs), 804.82/217.30 N(n, ns), 804.82/217.30 colorednodes), 804.82/217.30 possible^#(x, ns, colorednodes)) 804.82/217.30 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.30 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.30 colorof(x, colorednodes)), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes), 804.82/217.30 colorof^#(x, colorednodes)) 804.82/217.30 , possible^#(color, Nil(), colorednodes) -> c_6() 804.82/217.30 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.30 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.30 node, 804.82/217.30 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.30 , colorof^#(node, Nil()) -> c_8() } 804.82/217.30 Weak DPs: 804.82/217.30 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.30 c_1(colornode^#(ncs, x, colorednodes)) 804.82/217.30 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.82/217.30 , possible[Ite][True][Ite]^#(False(), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 -> c_23(possible^#(color, xs, colorednodes)) 804.82/217.30 , colornode[Ite][True][Ite]^#(False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 node, 804.82/217.30 colorednodes) 804.82/217.30 -> c_24(colornode^#(xs, node, colorednodes)) 804.82/217.30 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.30 c_9(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 c_10(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 c_11(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 c_12(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 c_13(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 c_14(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 c_15(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 c_16(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 c_17(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 c_18(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 c_19(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 c_20(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 c_21(eqColorList^#(cs1, cs2)) 804.82/217.30 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.30 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.30 colornode^#(cs, x, Nil())) 804.82/217.30 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.30 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.30 cs1, 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest), 804.82/217.30 eqColorList^#(cs1, ncs)) 804.82/217.30 , colorrestthetrick[Ite]^#(True(), 804.82/217.30 cs1, 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest) 804.82/217.30 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.30 , colorrestthetrick[Ite]^#(False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 cs, 804.82/217.30 ncs, 804.82/217.30 colorednodes, 804.82/217.30 rest) 804.82/217.30 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.30 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.30 c_28(colorof^#(node, xs)) } 804.82/217.30 Weak Trs: 804.82/217.30 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.30 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 , possible(color, Nil(), colorednodes) -> True() 804.82/217.30 , eqColor(NoColor(), b) -> False() 804.82/217.30 , eqColor(Blue(), NoColor()) -> False() 804.82/217.30 , eqColor(Blue(), Blue()) -> True() 804.82/217.30 , eqColor(Blue(), Red()) -> False() 804.82/217.30 , eqColor(Blue(), Yellow()) -> False() 804.82/217.30 , eqColor(Red(), NoColor()) -> False() 804.82/217.30 , eqColor(Red(), Blue()) -> False() 804.82/217.30 , eqColor(Red(), Red()) -> True() 804.82/217.30 , eqColor(Red(), Yellow()) -> False() 804.82/217.30 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.30 , eqColor(Yellow(), Blue()) -> False() 804.82/217.30 , eqColor(Yellow(), Red()) -> False() 804.82/217.30 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.30 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.30 CN(cs, node) 804.82/217.30 , colornode[Ite][True][Ite](False(), 804.82/217.30 Cons(x, xs), 804.82/217.30 node, 804.82/217.30 colorednodes) 804.82/217.30 -> colornode(xs, node, colorednodes) 804.82/217.30 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.30 , !EQ(S(x), 0()) -> False() 804.82/217.30 , !EQ(0(), S(y)) -> False() 804.82/217.30 , !EQ(0(), 0()) -> True() 804.82/217.30 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.30 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.30 Cons(x, xs), 804.82/217.30 N(n, ns), 804.82/217.30 colorednodes) 804.82/217.30 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.30 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.30 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.30 and(False(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.30 and(True(), eqColorList(cs1, cs2)) 804.82/217.30 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.30 , eqColorList(Nil(), Nil()) -> True() 804.82/217.30 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.30 False() 804.82/217.30 , possible[Ite][True][Ite](False(), 804.82/217.30 color, 804.82/217.30 Cons(x, xs), 804.82/217.30 colorednodes) 804.82/217.30 -> possible(color, xs, colorednodes) 804.82/217.30 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.30 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.30 node, 804.82/217.30 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.30 , colorof(node, Nil()) -> NoColor() 804.82/217.30 , colorof[Ite][True][Ite](True(), 804.82/217.30 node, 804.82/217.30 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.30 -> x 804.82/217.30 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.30 colorof(node, xs) 804.82/217.30 , and(True(), True()) -> True() 804.82/217.30 , and(True(), False()) -> False() 804.82/217.30 , and(False(), True()) -> False() 804.82/217.30 , and(False(), False()) -> False() } 804.82/217.30 Obligation: 804.82/217.30 innermost runtime complexity 804.82/217.30 Answer: 804.82/217.30 YES(O(1),O(n^3)) 804.82/217.30 804.82/217.30 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.30 closed under successors. The DPs are removed. 804.82/217.30 804.82/217.30 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.82/217.30 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.30 c_9(eqColorList^#(cs1, cs2)) 804.82/217.30 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 c_10(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 c_11(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 c_12(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 c_13(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 c_14(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 c_15(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 c_16(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 c_17(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 c_18(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 c_19(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 c_20(eqColorList^#(cs1, cs2)) 804.82/217.31 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 c_21(eqColorList^#(cs1, cs2)) } 804.82/217.31 804.82/217.31 We are left with following problem, upon which TcT provides the 804.82/217.31 certificate YES(O(1),O(n^3)). 804.82/217.31 804.82/217.31 Strict DPs: 804.82/217.31 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.31 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.31 Cons(x, xs), 804.82/217.31 N(n, ns), 804.82/217.31 colorednodes), 804.82/217.31 possible^#(x, ns, colorednodes)) 804.82/217.31 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.31 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.31 colorof(x, colorednodes)), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes), 804.82/217.31 colorof^#(x, colorednodes)) 804.82/217.31 , possible^#(color, Nil(), colorednodes) -> c_6() 804.82/217.31 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.31 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.31 node, 804.82/217.31 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.31 , colorof^#(node, Nil()) -> c_8() } 804.82/217.31 Weak DPs: 804.82/217.31 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.31 c_1(colornode^#(ncs, x, colorednodes)) 804.82/217.31 , possible[Ite][True][Ite]^#(False(), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 -> c_23(possible^#(color, xs, colorednodes)) 804.82/217.31 , colornode[Ite][True][Ite]^#(False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 node, 804.82/217.31 colorednodes) 804.82/217.31 -> c_24(colornode^#(xs, node, colorednodes)) 804.82/217.31 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.31 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.31 colornode^#(cs, x, Nil())) 804.82/217.31 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.31 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.31 cs1, 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest), 804.82/217.31 eqColorList^#(cs1, ncs)) 804.82/217.31 , colorrestthetrick[Ite]^#(True(), 804.82/217.31 cs1, 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest) 804.82/217.31 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.31 , colorrestthetrick[Ite]^#(False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest) 804.82/217.31 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.31 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.31 c_28(colorof^#(node, xs)) } 804.82/217.31 Weak Trs: 804.82/217.31 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.31 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 , possible(color, Nil(), colorednodes) -> True() 804.82/217.31 , eqColor(NoColor(), b) -> False() 804.82/217.31 , eqColor(Blue(), NoColor()) -> False() 804.82/217.31 , eqColor(Blue(), Blue()) -> True() 804.82/217.31 , eqColor(Blue(), Red()) -> False() 804.82/217.31 , eqColor(Blue(), Yellow()) -> False() 804.82/217.31 , eqColor(Red(), NoColor()) -> False() 804.82/217.31 , eqColor(Red(), Blue()) -> False() 804.82/217.31 , eqColor(Red(), Red()) -> True() 804.82/217.31 , eqColor(Red(), Yellow()) -> False() 804.82/217.31 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.31 , eqColor(Yellow(), Blue()) -> False() 804.82/217.31 , eqColor(Yellow(), Red()) -> False() 804.82/217.31 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.31 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.31 CN(cs, node) 804.82/217.31 , colornode[Ite][True][Ite](False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 node, 804.82/217.31 colorednodes) 804.82/217.31 -> colornode(xs, node, colorednodes) 804.82/217.31 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.31 , !EQ(S(x), 0()) -> False() 804.82/217.31 , !EQ(0(), S(y)) -> False() 804.82/217.31 , !EQ(0(), 0()) -> True() 804.82/217.31 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.31 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.31 Cons(x, xs), 804.82/217.31 N(n, ns), 804.82/217.31 colorednodes) 804.82/217.31 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.31 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.31 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.31 , eqColorList(Nil(), Nil()) -> True() 804.82/217.31 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.31 False() 804.82/217.31 , possible[Ite][True][Ite](False(), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 -> possible(color, xs, colorednodes) 804.82/217.31 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.31 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.31 node, 804.82/217.31 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.31 , colorof(node, Nil()) -> NoColor() 804.82/217.31 , colorof[Ite][True][Ite](True(), 804.82/217.31 node, 804.82/217.31 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.31 -> x 804.82/217.31 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.31 colorof(node, xs) 804.82/217.31 , and(True(), True()) -> True() 804.82/217.31 , and(True(), False()) -> False() 804.82/217.31 , and(False(), True()) -> False() 804.82/217.31 , and(False(), False()) -> False() } 804.82/217.31 Obligation: 804.82/217.31 innermost runtime complexity 804.82/217.31 Answer: 804.82/217.31 YES(O(1),O(n^3)) 804.82/217.31 804.82/217.31 Due to missing edges in the dependency-graph, the right-hand sides 804.82/217.31 of following rules could be simplified: 804.82/217.31 804.82/217.31 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.31 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.31 cs1, 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest), 804.82/217.31 eqColorList^#(cs1, ncs)) } 804.82/217.31 804.82/217.31 We are left with following problem, upon which TcT provides the 804.82/217.31 certificate YES(O(1),O(n^3)). 804.82/217.31 804.82/217.31 Strict DPs: 804.82/217.31 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.31 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.31 Cons(x, xs), 804.82/217.31 N(n, ns), 804.82/217.31 colorednodes), 804.82/217.31 possible^#(x, ns, colorednodes)) 804.82/217.31 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.31 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.31 colorof(x, colorednodes)), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes), 804.82/217.31 colorof^#(x, colorednodes)) 804.82/217.31 , possible^#(color, Nil(), colorednodes) -> c_3() 804.82/217.31 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.31 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.31 node, 804.82/217.31 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.31 , colorof^#(node, Nil()) -> c_5() } 804.82/217.31 Weak DPs: 804.82/217.31 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.31 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.31 , possible[Ite][True][Ite]^#(False(), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.31 , colornode[Ite][True][Ite]^#(False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 node, 804.82/217.31 colorednodes) 804.82/217.31 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.31 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.31 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.31 colornode^#(cs, x, Nil())) 804.82/217.31 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.31 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.31 cs1, 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest)) 804.82/217.31 , colorrestthetrick[Ite]^#(True(), 804.82/217.31 cs1, 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest) 804.82/217.31 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.31 , colorrestthetrick[Ite]^#(False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest) 804.82/217.31 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.31 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.31 c_13(colorof^#(node, xs)) } 804.82/217.31 Weak Trs: 804.82/217.31 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.31 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 , possible(color, Nil(), colorednodes) -> True() 804.82/217.31 , eqColor(NoColor(), b) -> False() 804.82/217.31 , eqColor(Blue(), NoColor()) -> False() 804.82/217.31 , eqColor(Blue(), Blue()) -> True() 804.82/217.31 , eqColor(Blue(), Red()) -> False() 804.82/217.31 , eqColor(Blue(), Yellow()) -> False() 804.82/217.31 , eqColor(Red(), NoColor()) -> False() 804.82/217.31 , eqColor(Red(), Blue()) -> False() 804.82/217.31 , eqColor(Red(), Red()) -> True() 804.82/217.31 , eqColor(Red(), Yellow()) -> False() 804.82/217.31 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.31 , eqColor(Yellow(), Blue()) -> False() 804.82/217.31 , eqColor(Yellow(), Red()) -> False() 804.82/217.31 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.31 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.31 CN(cs, node) 804.82/217.31 , colornode[Ite][True][Ite](False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 node, 804.82/217.31 colorednodes) 804.82/217.31 -> colornode(xs, node, colorednodes) 804.82/217.31 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.31 , !EQ(S(x), 0()) -> False() 804.82/217.31 , !EQ(0(), S(y)) -> False() 804.82/217.31 , !EQ(0(), 0()) -> True() 804.82/217.31 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.31 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.31 Cons(x, xs), 804.82/217.31 N(n, ns), 804.82/217.31 colorednodes) 804.82/217.31 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.31 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.31 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.31 and(False(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.31 and(True(), eqColorList(cs1, cs2)) 804.82/217.31 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.31 , eqColorList(Nil(), Nil()) -> True() 804.82/217.31 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.31 False() 804.82/217.31 , possible[Ite][True][Ite](False(), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes) 804.82/217.31 -> possible(color, xs, colorednodes) 804.82/217.31 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.31 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.31 node, 804.82/217.31 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.31 , colorof(node, Nil()) -> NoColor() 804.82/217.31 , colorof[Ite][True][Ite](True(), 804.82/217.31 node, 804.82/217.31 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.31 -> x 804.82/217.31 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.31 colorof(node, xs) 804.82/217.31 , and(True(), True()) -> True() 804.82/217.31 , and(True(), False()) -> False() 804.82/217.31 , and(False(), True()) -> False() 804.82/217.31 , and(False(), False()) -> False() } 804.82/217.31 Obligation: 804.82/217.31 innermost runtime complexity 804.82/217.31 Answer: 804.82/217.31 YES(O(1),O(n^3)) 804.82/217.31 804.82/217.31 We use the processor 'matrix interpretation of dimension 1' to 804.82/217.31 orient following rules strictly. 804.82/217.31 804.82/217.31 DPs: 804.82/217.31 { 3: possible^#(color, Nil(), colorednodes) -> c_3() 804.82/217.31 , 12: colorrestthetrick[Ite]^#(False(), 804.82/217.31 Cons(x, xs), 804.82/217.31 cs, 804.82/217.31 ncs, 804.82/217.31 colorednodes, 804.82/217.31 rest) 804.82/217.31 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.31 804.82/217.31 Sub-proof: 804.82/217.31 ---------- 804.82/217.31 The following argument positions are usable: 804.82/217.31 Uargs(c_1) = {1, 2}, Uargs(c_2) = {1, 2}, Uargs(c_4) = {1}, 804.82/217.31 Uargs(c_6) = {1}, Uargs(c_7) = {1}, Uargs(c_8) = {1}, 804.82/217.31 Uargs(c_9) = {1, 2}, Uargs(c_10) = {1}, Uargs(c_11) = {1}, 804.82/217.31 Uargs(c_12) = {1}, Uargs(c_13) = {1} 804.82/217.31 804.82/217.31 TcT has computed the following constructor-based matrix 804.82/217.31 interpretation satisfying not(EDA). 804.82/217.31 804.82/217.31 [True] = [0] 804.82/217.31 804.82/217.31 [NoColor] = [0] 804.82/217.31 804.82/217.31 [possible](x1, x2, x3) = [0] 804.82/217.31 804.82/217.31 [eqColor](x1, x2) = [0] 804.82/217.31 804.82/217.31 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.82/217.31 804.82/217.31 [CN](x1, x2) = [0] 804.82/217.31 804.82/217.31 [!EQ](x1, x2) = [0] 804.82/217.31 804.82/217.31 [Blue] = [0] 804.82/217.31 804.82/217.31 [Cons](x1, x2) = [1] x2 + [1] 804.82/217.31 804.82/217.31 [colornode](x1, x2, x3) = [0] 804.82/217.31 804.82/217.31 [NotPossible] = [7] 804.82/217.31 804.82/217.31 [eqColorList](x1, x2) = [0] 804.82/217.31 804.82/217.31 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.82/217.31 804.82/217.31 [False] = [0] 804.82/217.31 804.82/217.31 [Red] = [0] 804.82/217.31 804.82/217.31 [colorof](x1, x2) = [0] 804.82/217.31 804.82/217.31 [N](x1, x2) = [0] 804.82/217.31 804.82/217.31 [Nil] = [0] 804.82/217.31 804.82/217.31 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.82/217.31 804.82/217.31 [and](x1, x2) = [0] 804.82/217.31 804.82/217.31 [Yellow] = [0] 804.82/217.31 804.82/217.31 [S](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [0] = [0] 804.82/217.31 804.82/217.31 [colorrest^#](x1, x2, x3, x4) = [2] x2 + [2] 804.82/217.31 804.82/217.31 [colornode^#](x1, x2, x3) = [1] x1 + [2] 804.82/217.31 804.82/217.31 [possible^#](x1, x2, x3) = [1] 804.82/217.31 804.82/217.31 [possible[Ite][True][Ite]^#](x1, x2, x3, x4) = [1] 804.82/217.31 804.82/217.31 [colorof^#](x1, x2) = [0] 804.82/217.31 804.82/217.31 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [1] x2 + [1] 804.82/217.31 804.82/217.31 [graphcolour^#](x1, x2) = [7] x2 + [7] 804.82/217.31 804.82/217.31 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [2] x1 + [4] x5 + [2] 804.82/217.31 804.82/217.31 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [2] x2 + [4] x6 + [2] 804.82/217.31 804.82/217.31 [colorof[Ite][True][Ite]^#](x1, x2, x3) = [0] 804.82/217.31 804.82/217.31 [c_1](x1, x2) = [1] x1 + [1] x2 + [0] 804.82/217.31 804.82/217.31 [c_2](x1, x2) = [1] x1 + [2] x2 + [0] 804.82/217.31 804.82/217.31 [c_3] = [0] 804.82/217.31 804.82/217.31 [c_4](x1) = [2] x1 + [0] 804.82/217.31 804.82/217.31 [c_5] = [0] 804.82/217.31 804.82/217.31 [c_6](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [c_7](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [c_8](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [c_9](x1, x2) = [1] x1 + [1] x2 + [3] 804.82/217.31 804.82/217.31 [c_10](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [c_11](x1) = [1] x1 + [0] 804.82/217.31 804.82/217.31 [c_12](x1) = [1] x1 + [1] 804.82/217.31 804.82/217.31 [c_13](x1) = [4] x1 + [0] 804.82/217.31 804.82/217.31 The order satisfies the following ordering constraints: 804.82/217.31 804.82/217.31 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.82/217.31 ? [3] color + [3] colorednodes + [0] 804.82/217.31 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.31 color, 804.82/217.31 Cons(x, xs), 804.82/217.31 colorednodes)] 804.82/217.31 804.82/217.31 [possible(color, Nil(), colorednodes)] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [True()] 804.82/217.31 804.82/217.31 [eqColor(NoColor(), b)] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Blue(), NoColor())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Blue(), Blue())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [True()] 804.82/217.31 804.82/217.31 [eqColor(Blue(), Red())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Blue(), Yellow())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Red(), NoColor())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Red(), Blue())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Red(), Red())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [True()] 804.82/217.31 804.82/217.31 [eqColor(Red(), Yellow())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Yellow(), NoColor())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Yellow(), Blue())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Yellow(), Red())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColor(Yellow(), Yellow())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [True()] 804.82/217.31 804.82/217.31 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.82/217.31 >= [0] 804.82/217.31 = [CN(cs, node)] 804.82/217.31 804.82/217.31 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.82/217.31 Cons(x, xs), 804.82/217.31 node, 804.82/217.31 colorednodes)] 804.82/217.31 >= [0] 804.82/217.31 = [colornode(xs, node, colorednodes)] 804.82/217.31 804.82/217.31 [!EQ(S(x), S(y))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [!EQ(x, y)] 804.82/217.31 804.82/217.31 [!EQ(S(x), 0())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [!EQ(0(), S(y))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [!EQ(0(), 0())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [True()] 804.82/217.31 804.82/217.31 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.82/217.31 ? [3] colorednodes + [0] 804.82/217.31 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.31 Cons(x, xs), 804.82/217.31 N(n, ns), 804.82/217.31 colorednodes)] 804.82/217.31 804.82/217.31 [colornode(Nil(), node, colorednodes)] = [0] 804.82/217.31 ? [7] 804.82/217.31 = [NotPossible()] 804.82/217.31 804.82/217.31 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [False()] 804.82/217.31 804.82/217.31 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.31 >= [0] 804.82/217.31 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.31 804.82/217.31 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.32 804.82/217.32 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [False()] 804.82/217.32 804.82/217.32 [eqColorList(Nil(), Nil())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [True()] 804.82/217.32 804.82/217.32 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.82/217.32 >= [0] 804.82/217.32 = [False()] 804.82/217.32 804.82/217.32 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes)] 804.82/217.32 >= [0] 804.82/217.32 = [possible(color, xs, colorednodes)] 804.82/217.32 804.82/217.32 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.32 ? [3] node + [0] 804.82/217.32 = [colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs))] 804.82/217.32 804.82/217.32 [colorof(node, Nil())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [NoColor()] 804.82/217.32 804.82/217.32 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.82/217.32 node, 804.82/217.32 Cons(CN(Cons(x, xs), n), xs'))] 804.82/217.32 ? [1] x + [0] 804.82/217.32 = [x] 804.82/217.32 804.82/217.32 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.82/217.32 >= [0] 804.82/217.32 = [colorof(node, xs)] 804.82/217.32 804.82/217.32 [and(True(), True())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [True()] 804.82/217.32 804.82/217.32 [and(True(), False())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [False()] 804.82/217.32 804.82/217.32 [and(False(), True())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [False()] 804.82/217.32 804.82/217.32 [and(False(), False())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [False()] 804.82/217.32 804.82/217.32 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [2] ncs + [2] 804.82/217.32 >= [1] ncs + [2] 804.82/217.32 = [c_6(colornode^#(ncs, x, colorednodes))] 804.82/217.32 804.82/217.32 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [1] xs + [3] 804.82/217.32 >= [1] xs + [3] 804.82/217.32 = [c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.32 Cons(x, xs), 804.82/217.32 N(n, ns), 804.82/217.32 colorednodes), 804.82/217.32 possible^#(x, ns, colorednodes))] 804.82/217.32 804.82/217.32 [possible^#(color, Cons(x, xs), colorednodes)] = [1] 804.82/217.32 >= [1] 804.82/217.32 = [c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.32 colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes), 804.82/217.32 colorof^#(x, colorednodes))] 804.82/217.32 804.82/217.32 [possible^#(color, Nil(), colorednodes)] = [1] 804.82/217.32 > [0] 804.82/217.32 = [c_3()] 804.82/217.32 804.82/217.32 [possible[Ite][True][Ite]^#(False(), = [1] 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes)] 804.82/217.32 >= [1] 804.82/217.32 = [c_7(possible^#(color, xs, colorednodes))] 804.82/217.32 804.82/217.32 [colorof^#(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs)))] 804.82/217.32 804.82/217.32 [colorof^#(node, Nil())] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [c_5()] 804.82/217.32 804.82/217.32 [colornode[Ite][True][Ite]^#(False(), = [1] xs + [2] 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes)] 804.82/217.32 >= [1] xs + [2] 804.82/217.32 = [c_8(colornode^#(xs, node, colorednodes))] 804.82/217.32 804.82/217.32 [graphcolour^#(Cons(x, xs), cs)] = [7] cs + [7] 804.82/217.32 >= [3] cs + [7] 804.82/217.32 = [c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.32 colornode^#(cs, x, Nil()))] 804.82/217.32 804.82/217.32 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [2] cs1 + [4] rest + [2] 804.82/217.32 >= [2] cs1 + [4] rest + [2] 804.82/217.32 = [c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest))] 804.82/217.32 804.82/217.32 [colorrestthetrick[Ite]^#(True(), = [2] cs1 + [4] rest + [2] 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest)] 804.82/217.32 >= [2] cs1 + [2] 804.82/217.32 = [c_11(colorrest^#(cs, cs1, colorednodes, rest))] 804.82/217.32 804.82/217.32 [colorrestthetrick[Ite]^#(False(), = [2] xs + [4] rest + [4] 804.82/217.32 Cons(x, xs), 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest)] 804.82/217.32 > [2] xs + [4] rest + [3] 804.82/217.32 = [c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 804.82/217.32 804.82/217.32 [colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs))] = [0] 804.82/217.32 >= [0] 804.82/217.32 = [c_13(colorof^#(node, xs))] 804.82/217.32 804.82/217.32 804.82/217.32 We return to the main proof. Consider the set of all dependency 804.82/217.32 pairs 804.82/217.32 804.82/217.32 : 804.82/217.32 { 1: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.32 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.32 Cons(x, xs), 804.82/217.32 N(n, ns), 804.82/217.32 colorednodes), 804.82/217.32 possible^#(x, ns, colorednodes)) 804.82/217.32 , 2: possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.32 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.32 colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes), 804.82/217.32 colorof^#(x, colorednodes)) 804.82/217.32 , 3: possible^#(color, Nil(), colorednodes) -> c_3() 804.82/217.32 , 4: colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.32 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.32 , 5: colorof^#(node, Nil()) -> c_5() 804.82/217.32 , 6: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.32 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.32 , 7: possible[Ite][True][Ite]^#(False(), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.32 , 8: colornode[Ite][True][Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes) 804.82/217.32 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.32 , 9: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.32 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.32 colornode^#(cs, x, Nil())) 804.82/217.32 , 10: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.32 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest)) 804.82/217.32 , 11: colorrestthetrick[Ite]^#(True(), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.32 , 12: colorrestthetrick[Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.32 , 13: colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.32 c_13(colorof^#(node, xs)) } 804.82/217.32 804.82/217.32 Processor 'matrix interpretation of dimension 1' induces the 804.82/217.32 complexity certificate YES(?,O(n^1)) on application of dependency 804.82/217.32 pairs {3,12}. These cover all (indirect) predecessors of dependency 804.82/217.32 pairs {3,6,9,10,11,12}, their number of application is equally 804.82/217.32 bounded. The dependency pairs are shifted into the weak component. 804.82/217.32 804.82/217.32 We are left with following problem, upon which TcT provides the 804.82/217.32 certificate YES(O(1),O(n^3)). 804.82/217.32 804.82/217.32 Strict DPs: 804.82/217.32 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.32 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.32 Cons(x, xs), 804.82/217.32 N(n, ns), 804.82/217.32 colorednodes), 804.82/217.32 possible^#(x, ns, colorednodes)) 804.82/217.32 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.32 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.32 colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes), 804.82/217.32 colorof^#(x, colorednodes)) 804.82/217.32 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.32 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.32 , colorof^#(node, Nil()) -> c_5() } 804.82/217.32 Weak DPs: 804.82/217.32 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.32 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.32 , possible^#(color, Nil(), colorednodes) -> c_3() 804.82/217.32 , possible[Ite][True][Ite]^#(False(), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.32 , colornode[Ite][True][Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes) 804.82/217.32 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.32 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.32 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.32 colornode^#(cs, x, Nil())) 804.82/217.32 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.32 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest)) 804.82/217.32 , colorrestthetrick[Ite]^#(True(), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.32 , colorrestthetrick[Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.32 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.32 c_13(colorof^#(node, xs)) } 804.82/217.32 Weak Trs: 804.82/217.32 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.32 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 , possible(color, Nil(), colorednodes) -> True() 804.82/217.32 , eqColor(NoColor(), b) -> False() 804.82/217.32 , eqColor(Blue(), NoColor()) -> False() 804.82/217.32 , eqColor(Blue(), Blue()) -> True() 804.82/217.32 , eqColor(Blue(), Red()) -> False() 804.82/217.32 , eqColor(Blue(), Yellow()) -> False() 804.82/217.32 , eqColor(Red(), NoColor()) -> False() 804.82/217.32 , eqColor(Red(), Blue()) -> False() 804.82/217.32 , eqColor(Red(), Red()) -> True() 804.82/217.32 , eqColor(Red(), Yellow()) -> False() 804.82/217.32 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.32 , eqColor(Yellow(), Blue()) -> False() 804.82/217.32 , eqColor(Yellow(), Red()) -> False() 804.82/217.32 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.32 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.32 CN(cs, node) 804.82/217.32 , colornode[Ite][True][Ite](False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes) 804.82/217.32 -> colornode(xs, node, colorednodes) 804.82/217.32 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.32 , !EQ(S(x), 0()) -> False() 804.82/217.32 , !EQ(0(), S(y)) -> False() 804.82/217.32 , !EQ(0(), 0()) -> True() 804.82/217.32 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.32 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.32 Cons(x, xs), 804.82/217.32 N(n, ns), 804.82/217.32 colorednodes) 804.82/217.32 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.32 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.32 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.32 and(True(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.32 and(True(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.32 and(False(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.32 and(True(), eqColorList(cs1, cs2)) 804.82/217.32 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.32 , eqColorList(Nil(), Nil()) -> True() 804.82/217.32 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.32 False() 804.82/217.32 , possible[Ite][True][Ite](False(), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 -> possible(color, xs, colorednodes) 804.82/217.32 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.32 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.32 , colorof(node, Nil()) -> NoColor() 804.82/217.32 , colorof[Ite][True][Ite](True(), 804.82/217.32 node, 804.82/217.32 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.32 -> x 804.82/217.32 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.32 colorof(node, xs) 804.82/217.32 , and(True(), True()) -> True() 804.82/217.32 , and(True(), False()) -> False() 804.82/217.32 , and(False(), True()) -> False() 804.82/217.32 , and(False(), False()) -> False() } 804.82/217.32 Obligation: 804.82/217.32 innermost runtime complexity 804.82/217.32 Answer: 804.82/217.32 YES(O(1),O(n^3)) 804.82/217.32 804.82/217.32 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.32 closed under successors. The DPs are removed. 804.82/217.32 804.82/217.32 { possible^#(color, Nil(), colorednodes) -> c_3() } 804.82/217.32 804.82/217.32 We are left with following problem, upon which TcT provides the 804.82/217.32 certificate YES(O(1),O(n^3)). 804.82/217.32 804.82/217.32 Strict DPs: 804.82/217.32 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.32 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.32 Cons(x, xs), 804.82/217.32 N(n, ns), 804.82/217.32 colorednodes), 804.82/217.32 possible^#(x, ns, colorednodes)) 804.82/217.32 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.32 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.32 colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes), 804.82/217.32 colorof^#(x, colorednodes)) 804.82/217.32 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.32 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.32 node, 804.82/217.32 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.32 , colorof^#(node, Nil()) -> c_5() } 804.82/217.32 Weak DPs: 804.82/217.32 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.32 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.32 , possible[Ite][True][Ite]^#(False(), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.32 , colornode[Ite][True][Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes) 804.82/217.32 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.32 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.32 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.32 colornode^#(cs, x, Nil())) 804.82/217.32 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.32 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest)) 804.82/217.32 , colorrestthetrick[Ite]^#(True(), 804.82/217.32 cs1, 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.32 , colorrestthetrick[Ite]^#(False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 cs, 804.82/217.32 ncs, 804.82/217.32 colorednodes, 804.82/217.32 rest) 804.82/217.32 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.32 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.32 c_13(colorof^#(node, xs)) } 804.82/217.32 Weak Trs: 804.82/217.32 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.32 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.32 color, 804.82/217.32 Cons(x, xs), 804.82/217.32 colorednodes) 804.82/217.32 , possible(color, Nil(), colorednodes) -> True() 804.82/217.32 , eqColor(NoColor(), b) -> False() 804.82/217.32 , eqColor(Blue(), NoColor()) -> False() 804.82/217.32 , eqColor(Blue(), Blue()) -> True() 804.82/217.32 , eqColor(Blue(), Red()) -> False() 804.82/217.32 , eqColor(Blue(), Yellow()) -> False() 804.82/217.32 , eqColor(Red(), NoColor()) -> False() 804.82/217.32 , eqColor(Red(), Blue()) -> False() 804.82/217.32 , eqColor(Red(), Red()) -> True() 804.82/217.32 , eqColor(Red(), Yellow()) -> False() 804.82/217.32 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.32 , eqColor(Yellow(), Blue()) -> False() 804.82/217.32 , eqColor(Yellow(), Red()) -> False() 804.82/217.32 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.32 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.32 CN(cs, node) 804.82/217.32 , colornode[Ite][True][Ite](False(), 804.82/217.32 Cons(x, xs), 804.82/217.32 node, 804.82/217.32 colorednodes) 804.82/217.33 -> colornode(xs, node, colorednodes) 804.82/217.33 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.33 , !EQ(S(x), 0()) -> False() 804.82/217.33 , !EQ(0(), S(y)) -> False() 804.82/217.33 , !EQ(0(), 0()) -> True() 804.82/217.33 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes) 804.82/217.33 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.33 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.33 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.33 , eqColorList(Nil(), Nil()) -> True() 804.82/217.33 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.33 False() 804.82/217.33 , possible[Ite][True][Ite](False(), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes) 804.82/217.33 -> possible(color, xs, colorednodes) 804.82/217.33 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.33 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.33 node, 804.82/217.33 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.33 , colorof(node, Nil()) -> NoColor() 804.82/217.33 , colorof[Ite][True][Ite](True(), 804.82/217.33 node, 804.82/217.33 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.33 -> x 804.82/217.33 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.33 colorof(node, xs) 804.82/217.33 , and(True(), True()) -> True() 804.82/217.33 , and(True(), False()) -> False() 804.82/217.33 , and(False(), True()) -> False() 804.82/217.33 , and(False(), False()) -> False() } 804.82/217.33 Obligation: 804.82/217.33 innermost runtime complexity 804.82/217.33 Answer: 804.82/217.33 YES(O(1),O(n^3)) 804.82/217.33 804.82/217.33 We decompose the input problem according to the dependency graph 804.82/217.33 into the upper component 804.82/217.33 804.82/217.33 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.33 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.33 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes), 804.82/217.33 possible^#(x, ns, colorednodes)) 804.82/217.33 , colornode[Ite][True][Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.33 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.33 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.33 colornode^#(cs, x, Nil())) 804.82/217.33 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.33 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest)) 804.82/217.33 , colorrestthetrick[Ite]^#(True(), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.33 , colorrestthetrick[Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.33 804.82/217.33 and lower component 804.82/217.33 804.82/217.33 { possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.33 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.33 colorof(x, colorednodes)), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes), 804.82/217.33 colorof^#(x, colorednodes)) 804.82/217.33 , possible[Ite][True][Ite]^#(False(), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes) 804.82/217.33 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.33 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.33 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.33 node, 804.82/217.33 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.33 , colorof^#(node, Nil()) -> c_5() 804.82/217.33 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.33 c_13(colorof^#(node, xs)) } 804.82/217.33 804.82/217.33 Further, following extension rules are added to the lower 804.82/217.33 component. 804.82/217.33 804.82/217.33 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.33 colornode^#(ncs, x, colorednodes) 804.82/217.33 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 possible^#(x, ns, colorednodes) 804.82/217.33 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes) 804.82/217.33 , colornode[Ite][True][Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> colornode^#(xs, node, colorednodes) 804.82/217.33 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.33 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.33 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.33 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.33 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 , colorrestthetrick[Ite]^#(True(), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.33 , colorrestthetrick[Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.33 804.82/217.33 TcT solves the upper component with certificate YES(O(1),O(n^1)). 804.82/217.33 804.82/217.33 Sub-proof: 804.82/217.33 ---------- 804.82/217.33 We are left with following problem, upon which TcT provides the 804.82/217.33 certificate YES(O(1),O(n^1)). 804.82/217.33 804.82/217.33 Strict DPs: 804.82/217.33 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes), 804.82/217.33 possible^#(x, ns, colorednodes)) } 804.82/217.33 Weak DPs: 804.82/217.33 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.33 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.33 , colornode[Ite][True][Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.33 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.33 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.33 colornode^#(cs, x, Nil())) 804.82/217.33 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.33 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest)) 804.82/217.33 , colorrestthetrick[Ite]^#(True(), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.33 , colorrestthetrick[Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.33 Weak Trs: 804.82/217.33 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.33 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes) 804.82/217.33 , possible(color, Nil(), colorednodes) -> True() 804.82/217.33 , eqColor(NoColor(), b) -> False() 804.82/217.33 , eqColor(Blue(), NoColor()) -> False() 804.82/217.33 , eqColor(Blue(), Blue()) -> True() 804.82/217.33 , eqColor(Blue(), Red()) -> False() 804.82/217.33 , eqColor(Blue(), Yellow()) -> False() 804.82/217.33 , eqColor(Red(), NoColor()) -> False() 804.82/217.33 , eqColor(Red(), Blue()) -> False() 804.82/217.33 , eqColor(Red(), Red()) -> True() 804.82/217.33 , eqColor(Red(), Yellow()) -> False() 804.82/217.33 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.33 , eqColor(Yellow(), Blue()) -> False() 804.82/217.33 , eqColor(Yellow(), Red()) -> False() 804.82/217.33 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.33 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.33 CN(cs, node) 804.82/217.33 , colornode[Ite][True][Ite](False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> colornode(xs, node, colorednodes) 804.82/217.33 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.33 , !EQ(S(x), 0()) -> False() 804.82/217.33 , !EQ(0(), S(y)) -> False() 804.82/217.33 , !EQ(0(), 0()) -> True() 804.82/217.33 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes) 804.82/217.33 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.33 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.33 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.33 and(False(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.33 and(True(), eqColorList(cs1, cs2)) 804.82/217.33 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.33 , eqColorList(Nil(), Nil()) -> True() 804.82/217.33 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.33 False() 804.82/217.33 , possible[Ite][True][Ite](False(), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes) 804.82/217.33 -> possible(color, xs, colorednodes) 804.82/217.33 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.33 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.33 node, 804.82/217.33 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.33 , colorof(node, Nil()) -> NoColor() 804.82/217.33 , colorof[Ite][True][Ite](True(), 804.82/217.33 node, 804.82/217.33 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.33 -> x 804.82/217.33 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.33 colorof(node, xs) 804.82/217.33 , and(True(), True()) -> True() 804.82/217.33 , and(True(), False()) -> False() 804.82/217.33 , and(False(), True()) -> False() 804.82/217.33 , and(False(), False()) -> False() } 804.82/217.33 Obligation: 804.82/217.33 innermost runtime complexity 804.82/217.33 Answer: 804.82/217.33 YES(O(1),O(n^1)) 804.82/217.33 804.82/217.33 We use the processor 'matrix interpretation of dimension 1' to 804.82/217.33 orient following rules strictly. 804.82/217.33 804.82/217.33 DPs: 804.82/217.33 { 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.33 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.33 , 3: colornode[Ite][True][Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.33 , 4: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.33 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.33 colornode^#(cs, x, Nil())) 804.82/217.33 , 7: colorrestthetrick[Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest) 804.82/217.33 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.33 804.82/217.33 Sub-proof: 804.82/217.33 ---------- 804.82/217.33 The following argument positions are usable: 804.82/217.33 Uargs(c_1) = {1}, Uargs(c_6) = {1}, Uargs(c_8) = {1}, 804.82/217.33 Uargs(c_9) = {1, 2}, Uargs(c_10) = {1}, Uargs(c_11) = {1}, 804.82/217.33 Uargs(c_12) = {1} 804.82/217.33 804.82/217.33 TcT has computed the following constructor-based matrix 804.82/217.33 interpretation satisfying not(EDA). 804.82/217.33 804.82/217.33 [True] = [0] 804.82/217.33 804.82/217.33 [NoColor] = [0] 804.82/217.33 804.82/217.33 [possible](x1, x2, x3) = [0] 804.82/217.33 804.82/217.33 [eqColor](x1, x2) = [0] 804.82/217.33 804.82/217.33 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.82/217.33 804.82/217.33 [CN](x1, x2) = [0] 804.82/217.33 804.82/217.33 [!EQ](x1, x2) = [0] 804.82/217.33 804.82/217.33 [Blue] = [0] 804.82/217.33 804.82/217.33 [Cons](x1, x2) = [1] x2 + [4] 804.82/217.33 804.82/217.33 [colornode](x1, x2, x3) = [0] 804.82/217.33 804.82/217.33 [NotPossible] = [7] 804.82/217.33 804.82/217.33 [eqColorList](x1, x2) = [0] 804.82/217.33 804.82/217.33 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.82/217.33 804.82/217.33 [False] = [0] 804.82/217.33 804.82/217.33 [Red] = [0] 804.82/217.33 804.82/217.33 [colorof](x1, x2) = [0] 804.82/217.33 804.82/217.33 [N](x1, x2) = [0] 804.82/217.33 804.82/217.33 [Nil] = [0] 804.82/217.33 804.82/217.33 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.82/217.33 804.82/217.33 [and](x1, x2) = [0] 804.82/217.33 804.82/217.33 [Yellow] = [0] 804.82/217.33 804.82/217.33 [S](x1) = [1] x1 + [0] 804.82/217.33 804.82/217.33 [0] = [0] 804.82/217.33 804.82/217.33 [colorrest^#](x1, x2, x3, x4) = [2] x2 + [4] 804.82/217.33 804.82/217.33 [colornode^#](x1, x2, x3) = [2] x1 + [0] 804.82/217.33 804.82/217.33 [possible^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 804.82/217.33 804.82/217.33 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [2] x2 + [0] 804.82/217.33 804.82/217.33 [graphcolour^#](x1, x2) = [2] x1 + [7] x2 + [7] 804.82/217.33 804.82/217.33 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [2] x1 + [4] 804.82/217.33 804.82/217.33 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [2] x2 + [4] 804.82/217.33 804.82/217.33 [c_1](x1, x2) = [1] x1 + [0] 804.82/217.33 804.82/217.33 [c_6](x1) = [1] x1 + [1] 804.82/217.33 804.82/217.33 [c_8](x1) = [1] x1 + [5] 804.82/217.33 804.82/217.33 [c_9](x1, x2) = [2] x1 + [1] x2 + [3] 804.82/217.33 804.82/217.33 [c_10](x1) = [1] x1 + [0] 804.82/217.33 804.82/217.33 [c_11](x1) = [1] x1 + [0] 804.82/217.33 804.82/217.33 [c_12](x1) = [1] x1 + [3] 804.82/217.33 804.82/217.33 The order satisfies the following ordering constraints: 804.82/217.33 804.82/217.33 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.82/217.33 ? [3] color + [3] colorednodes + [0] 804.82/217.33 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes)] 804.82/217.33 804.82/217.33 [possible(color, Nil(), colorednodes)] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [eqColor(NoColor(), b)] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Blue(), NoColor())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Blue(), Blue())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [eqColor(Blue(), Red())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Blue(), Yellow())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Red(), NoColor())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Red(), Blue())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Red(), Red())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [eqColor(Red(), Yellow())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Yellow(), NoColor())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Yellow(), Blue())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Yellow(), Red())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColor(Yellow(), Yellow())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.82/217.33 >= [0] 804.82/217.33 = [CN(cs, node)] 804.82/217.33 804.82/217.33 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes)] 804.82/217.33 >= [0] 804.82/217.33 = [colornode(xs, node, colorednodes)] 804.82/217.33 804.82/217.33 [!EQ(S(x), S(y))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [!EQ(x, y)] 804.82/217.33 804.82/217.33 [!EQ(S(x), 0())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [!EQ(0(), S(y))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [!EQ(0(), 0())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.82/217.33 ? [3] colorednodes + [0] 804.82/217.33 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes)] 804.82/217.33 804.82/217.33 [colornode(Nil(), node, colorednodes)] = [0] 804.82/217.33 ? [7] 804.82/217.33 = [NotPossible()] 804.82/217.33 804.82/217.33 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.33 804.82/217.33 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [eqColorList(Nil(), Nil())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.82/217.33 color, 804.82/217.33 Cons(x, xs), 804.82/217.33 colorednodes)] 804.82/217.33 >= [0] 804.82/217.33 = [possible(color, xs, colorednodes)] 804.82/217.33 804.82/217.33 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.33 ? [3] node + [0] 804.82/217.33 = [colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.33 node, 804.82/217.33 Cons(CN(cl, N(name, adjs)), xs))] 804.82/217.33 804.82/217.33 [colorof(node, Nil())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [NoColor()] 804.82/217.33 804.82/217.33 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.82/217.33 node, 804.82/217.33 Cons(CN(Cons(x, xs), n), xs'))] 804.82/217.33 ? [1] x + [0] 804.82/217.33 = [x] 804.82/217.33 804.82/217.33 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.82/217.33 >= [0] 804.82/217.33 = [colorof(node, xs)] 804.82/217.33 804.82/217.33 [and(True(), True())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [True()] 804.82/217.33 804.82/217.33 [and(True(), False())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [and(False(), True())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [and(False(), False())] = [0] 804.82/217.33 >= [0] 804.82/217.33 = [False()] 804.82/217.33 804.82/217.33 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [2] ncs + [4] 804.82/217.33 > [2] ncs + [1] 804.82/217.33 = [c_6(colornode^#(ncs, x, colorednodes))] 804.82/217.33 804.82/217.33 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [2] xs + [8] 804.82/217.33 >= [2] xs + [8] 804.82/217.33 = [c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes), 804.82/217.33 possible^#(x, ns, colorednodes))] 804.82/217.33 804.82/217.33 [colornode[Ite][True][Ite]^#(False(), = [2] xs + [8] 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes)] 804.82/217.33 > [2] xs + [5] 804.82/217.33 = [c_8(colornode^#(xs, node, colorednodes))] 804.82/217.33 804.82/217.33 [graphcolour^#(Cons(x, xs), cs)] = [2] xs + [7] cs + [15] 804.82/217.33 > [6] cs + [11] 804.82/217.33 = [c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.33 colornode^#(cs, x, Nil()))] 804.82/217.33 804.82/217.33 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [2] cs1 + [4] 804.82/217.33 >= [2] cs1 + [4] 804.82/217.33 = [c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest))] 804.82/217.33 804.82/217.33 [colorrestthetrick[Ite]^#(True(), = [2] cs1 + [4] 804.82/217.33 cs1, 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest)] 804.82/217.33 >= [2] cs1 + [4] 804.82/217.33 = [c_11(colorrest^#(cs, cs1, colorednodes, rest))] 804.82/217.33 804.82/217.33 [colorrestthetrick[Ite]^#(False(), = [2] xs + [12] 804.82/217.33 Cons(x, xs), 804.82/217.33 cs, 804.82/217.33 ncs, 804.82/217.33 colorednodes, 804.82/217.33 rest)] 804.82/217.33 > [2] xs + [7] 804.82/217.33 = [c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 804.82/217.33 804.82/217.33 804.82/217.33 We return to the main proof. Consider the set of all dependency 804.82/217.33 pairs 804.82/217.33 804.82/217.33 : 804.82/217.33 { 1: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.33 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.33 Cons(x, xs), 804.82/217.33 N(n, ns), 804.82/217.33 colorednodes), 804.82/217.33 possible^#(x, ns, colorednodes)) 804.82/217.33 , 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.33 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.33 , 3: colornode[Ite][True][Ite]^#(False(), 804.82/217.33 Cons(x, xs), 804.82/217.33 node, 804.82/217.33 colorednodes) 804.82/217.33 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.33 , 4: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.34 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.34 colornode^#(cs, x, Nil())) 804.82/217.34 , 5: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.34 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest)) 804.82/217.34 , 6: colorrestthetrick[Ite]^#(True(), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.34 , 7: colorrestthetrick[Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.34 804.82/217.34 Processor 'matrix interpretation of dimension 1' induces the 804.82/217.34 complexity certificate YES(?,O(n^1)) on application of dependency 804.82/217.34 pairs {2,3,4,7}. These cover all (indirect) predecessors of 804.82/217.34 dependency pairs {1,2,3,4,5,6,7}, their number of application is 804.82/217.34 equally bounded. The dependency pairs are shifted into the weak 804.82/217.34 component. 804.82/217.34 804.82/217.34 We are left with following problem, upon which TcT provides the 804.82/217.34 certificate YES(O(1),O(1)). 804.82/217.34 804.82/217.34 Weak DPs: 804.82/217.34 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.34 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.34 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes), 804.82/217.34 possible^#(x, ns, colorednodes)) 804.82/217.34 , colornode[Ite][True][Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.34 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.34 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.34 colornode^#(cs, x, Nil())) 804.82/217.34 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.34 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest)) 804.82/217.34 , colorrestthetrick[Ite]^#(True(), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.34 , colorrestthetrick[Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.34 Weak Trs: 804.82/217.34 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.34 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 , possible(color, Nil(), colorednodes) -> True() 804.82/217.34 , eqColor(NoColor(), b) -> False() 804.82/217.34 , eqColor(Blue(), NoColor()) -> False() 804.82/217.34 , eqColor(Blue(), Blue()) -> True() 804.82/217.34 , eqColor(Blue(), Red()) -> False() 804.82/217.34 , eqColor(Blue(), Yellow()) -> False() 804.82/217.34 , eqColor(Red(), NoColor()) -> False() 804.82/217.34 , eqColor(Red(), Blue()) -> False() 804.82/217.34 , eqColor(Red(), Red()) -> True() 804.82/217.34 , eqColor(Red(), Yellow()) -> False() 804.82/217.34 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.34 , eqColor(Yellow(), Blue()) -> False() 804.82/217.34 , eqColor(Yellow(), Red()) -> False() 804.82/217.34 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.34 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.34 CN(cs, node) 804.82/217.34 , colornode[Ite][True][Ite](False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> colornode(xs, node, colorednodes) 804.82/217.34 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.34 , !EQ(S(x), 0()) -> False() 804.82/217.34 , !EQ(0(), S(y)) -> False() 804.82/217.34 , !EQ(0(), 0()) -> True() 804.82/217.34 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes) 804.82/217.34 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.34 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.34 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.34 , eqColorList(Nil(), Nil()) -> True() 804.82/217.34 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.34 False() 804.82/217.34 , possible[Ite][True][Ite](False(), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 -> possible(color, xs, colorednodes) 804.82/217.34 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.34 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.34 node, 804.82/217.34 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.34 , colorof(node, Nil()) -> NoColor() 804.82/217.34 , colorof[Ite][True][Ite](True(), 804.82/217.34 node, 804.82/217.34 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.34 -> x 804.82/217.34 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.34 colorof(node, xs) 804.82/217.34 , and(True(), True()) -> True() 804.82/217.34 , and(True(), False()) -> False() 804.82/217.34 , and(False(), True()) -> False() 804.82/217.34 , and(False(), False()) -> False() } 804.82/217.34 Obligation: 804.82/217.34 innermost runtime complexity 804.82/217.34 Answer: 804.82/217.34 YES(O(1),O(1)) 804.82/217.34 804.82/217.34 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.34 closed under successors. The DPs are removed. 804.82/217.34 804.82/217.34 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.34 c_6(colornode^#(ncs, x, colorednodes)) 804.82/217.34 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 c_1(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes), 804.82/217.34 possible^#(x, ns, colorednodes)) 804.82/217.34 , colornode[Ite][True][Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> c_8(colornode^#(xs, node, colorednodes)) 804.82/217.34 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.34 c_9(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.34 colornode^#(cs, x, Nil())) 804.82/217.34 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.34 c_10(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest)) 804.82/217.34 , colorrestthetrick[Ite]^#(True(), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_11(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.34 , colorrestthetrick[Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> c_12(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 804.82/217.34 804.82/217.34 We are left with following problem, upon which TcT provides the 804.82/217.34 certificate YES(O(1),O(1)). 804.82/217.34 804.82/217.34 Weak Trs: 804.82/217.34 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.34 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 , possible(color, Nil(), colorednodes) -> True() 804.82/217.34 , eqColor(NoColor(), b) -> False() 804.82/217.34 , eqColor(Blue(), NoColor()) -> False() 804.82/217.34 , eqColor(Blue(), Blue()) -> True() 804.82/217.34 , eqColor(Blue(), Red()) -> False() 804.82/217.34 , eqColor(Blue(), Yellow()) -> False() 804.82/217.34 , eqColor(Red(), NoColor()) -> False() 804.82/217.34 , eqColor(Red(), Blue()) -> False() 804.82/217.34 , eqColor(Red(), Red()) -> True() 804.82/217.34 , eqColor(Red(), Yellow()) -> False() 804.82/217.34 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.34 , eqColor(Yellow(), Blue()) -> False() 804.82/217.34 , eqColor(Yellow(), Red()) -> False() 804.82/217.34 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.34 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.34 CN(cs, node) 804.82/217.34 , colornode[Ite][True][Ite](False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> colornode(xs, node, colorednodes) 804.82/217.34 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.34 , !EQ(S(x), 0()) -> False() 804.82/217.34 , !EQ(0(), S(y)) -> False() 804.82/217.34 , !EQ(0(), 0()) -> True() 804.82/217.34 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes) 804.82/217.34 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.34 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.34 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.34 , eqColorList(Nil(), Nil()) -> True() 804.82/217.34 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.34 False() 804.82/217.34 , possible[Ite][True][Ite](False(), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 -> possible(color, xs, colorednodes) 804.82/217.34 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.34 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.34 node, 804.82/217.34 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.34 , colorof(node, Nil()) -> NoColor() 804.82/217.34 , colorof[Ite][True][Ite](True(), 804.82/217.34 node, 804.82/217.34 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.34 -> x 804.82/217.34 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.34 colorof(node, xs) 804.82/217.34 , and(True(), True()) -> True() 804.82/217.34 , and(True(), False()) -> False() 804.82/217.34 , and(False(), True()) -> False() 804.82/217.34 , and(False(), False()) -> False() } 804.82/217.34 Obligation: 804.82/217.34 innermost runtime complexity 804.82/217.34 Answer: 804.82/217.34 YES(O(1),O(1)) 804.82/217.34 804.82/217.34 No rule is usable, rules are removed from the input problem. 804.82/217.34 804.82/217.34 We are left with following problem, upon which TcT provides the 804.82/217.34 certificate YES(O(1),O(1)). 804.82/217.34 804.82/217.34 Rules: Empty 804.82/217.34 Obligation: 804.82/217.34 innermost runtime complexity 804.82/217.34 Answer: 804.82/217.34 YES(O(1),O(1)) 804.82/217.34 804.82/217.34 Empty rules are trivially bounded 804.82/217.34 804.82/217.34 We return to the main proof. 804.82/217.34 804.82/217.34 We are left with following problem, upon which TcT provides the 804.82/217.34 certificate YES(O(1),O(n^2)). 804.82/217.34 804.82/217.34 Strict DPs: 804.82/217.34 { possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.34 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.34 colorof(x, colorednodes)), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes), 804.82/217.34 colorof^#(x, colorednodes)) 804.82/217.34 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.34 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.34 node, 804.82/217.34 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.34 , colorof^#(node, Nil()) -> c_5() } 804.82/217.34 Weak DPs: 804.82/217.34 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.34 colornode^#(ncs, x, colorednodes) 804.82/217.34 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 possible^#(x, ns, colorednodes) 804.82/217.34 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes) 804.82/217.34 , possible[Ite][True][Ite]^#(False(), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.34 , colornode[Ite][True][Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> colornode^#(xs, node, colorednodes) 804.82/217.34 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.34 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.34 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.34 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.34 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 , colorrestthetrick[Ite]^#(True(), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.34 , colorrestthetrick[Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.34 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.34 c_13(colorof^#(node, xs)) } 804.82/217.34 Weak Trs: 804.82/217.34 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.34 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 , possible(color, Nil(), colorednodes) -> True() 804.82/217.34 , eqColor(NoColor(), b) -> False() 804.82/217.34 , eqColor(Blue(), NoColor()) -> False() 804.82/217.34 , eqColor(Blue(), Blue()) -> True() 804.82/217.34 , eqColor(Blue(), Red()) -> False() 804.82/217.34 , eqColor(Blue(), Yellow()) -> False() 804.82/217.34 , eqColor(Red(), NoColor()) -> False() 804.82/217.34 , eqColor(Red(), Blue()) -> False() 804.82/217.34 , eqColor(Red(), Red()) -> True() 804.82/217.34 , eqColor(Red(), Yellow()) -> False() 804.82/217.34 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.34 , eqColor(Yellow(), Blue()) -> False() 804.82/217.34 , eqColor(Yellow(), Red()) -> False() 804.82/217.34 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.34 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.34 CN(cs, node) 804.82/217.34 , colornode[Ite][True][Ite](False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> colornode(xs, node, colorednodes) 804.82/217.34 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.34 , !EQ(S(x), 0()) -> False() 804.82/217.34 , !EQ(0(), S(y)) -> False() 804.82/217.34 , !EQ(0(), 0()) -> True() 804.82/217.34 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.34 Cons(x, xs), 804.82/217.34 N(n, ns), 804.82/217.34 colorednodes) 804.82/217.34 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.34 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.34 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.34 and(False(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.34 and(True(), eqColorList(cs1, cs2)) 804.82/217.34 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.34 , eqColorList(Nil(), Nil()) -> True() 804.82/217.34 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.34 False() 804.82/217.34 , possible[Ite][True][Ite](False(), 804.82/217.34 color, 804.82/217.34 Cons(x, xs), 804.82/217.34 colorednodes) 804.82/217.34 -> possible(color, xs, colorednodes) 804.82/217.34 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.34 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.34 node, 804.82/217.34 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.34 , colorof(node, Nil()) -> NoColor() 804.82/217.34 , colorof[Ite][True][Ite](True(), 804.82/217.34 node, 804.82/217.34 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.34 -> x 804.82/217.34 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.34 colorof(node, xs) 804.82/217.34 , and(True(), True()) -> True() 804.82/217.34 , and(True(), False()) -> False() 804.82/217.34 , and(False(), True()) -> False() 804.82/217.34 , and(False(), False()) -> False() } 804.82/217.34 Obligation: 804.82/217.34 innermost runtime complexity 804.82/217.34 Answer: 804.82/217.34 YES(O(1),O(n^2)) 804.82/217.34 804.82/217.34 We use the processor 'matrix interpretation of dimension 1' to 804.82/217.34 orient following rules strictly. 804.82/217.34 804.82/217.34 DPs: 804.82/217.34 { 3: colorof^#(node, Nil()) -> c_5() 804.82/217.34 , 5: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.34 possible^#(x, ns, colorednodes) 804.82/217.34 , 8: colornode[Ite][True][Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 node, 804.82/217.34 colorednodes) 804.82/217.34 -> colornode^#(xs, node, colorednodes) 804.82/217.34 , 9: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.34 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.34 , 10: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.34 , 12: colorrestthetrick[Ite]^#(True(), 804.82/217.34 cs1, 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.34 , 13: colorrestthetrick[Ite]^#(False(), 804.82/217.34 Cons(x, xs), 804.82/217.34 cs, 804.82/217.34 ncs, 804.82/217.34 colorednodes, 804.82/217.34 rest) 804.82/217.34 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.34 Trs: 804.82/217.34 { possible(color, Nil(), colorednodes) -> True() 804.82/217.34 , eqColor(Blue(), Blue()) -> True() 804.82/217.34 , eqColor(Red(), Red()) -> True() 804.82/217.34 , eqColor(Yellow(), Yellow()) -> True() } 804.82/217.34 804.82/217.34 Sub-proof: 804.82/217.34 ---------- 804.82/217.34 The following argument positions are usable: 804.82/217.34 Uargs(c_2) = {1, 2}, Uargs(c_4) = {1}, Uargs(c_7) = {1}, 804.82/217.34 Uargs(c_13) = {1} 804.82/217.34 804.82/217.34 TcT has computed the following constructor-based matrix 804.82/217.34 interpretation satisfying not(EDA). 804.82/217.34 804.82/217.34 [True] = [0] 804.82/217.34 804.82/217.34 [NoColor] = [0] 804.82/217.34 804.82/217.34 [possible](x1, x2, x3) = [1] 804.82/217.34 804.82/217.34 [eqColor](x1, x2) = [1] 804.82/217.34 804.82/217.34 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.82/217.34 804.82/217.34 [CN](x1, x2) = [0] 804.82/217.34 804.82/217.34 [!EQ](x1, x2) = [0] 804.82/217.34 804.82/217.34 [Blue] = [0] 804.82/217.34 804.82/217.34 [Cons](x1, x2) = [1] x1 + [1] x2 + [1] 804.82/217.34 804.82/217.34 [colornode](x1, x2, x3) = [0] 804.82/217.34 804.82/217.34 [NotPossible] = [7] 804.82/217.34 804.82/217.34 [eqColorList](x1, x2) = [0] 804.82/217.34 804.82/217.34 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [1] 804.82/217.34 804.82/217.34 [False] = [1] 804.82/217.34 804.82/217.34 [Red] = [0] 804.82/217.34 804.82/217.34 [colorof](x1, x2) = [0] 804.82/217.34 804.82/217.34 [N](x1, x2) = [1] x2 + [0] 804.82/217.34 804.82/217.34 [Nil] = [0] 804.82/217.34 804.82/217.34 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.82/217.34 804.82/217.34 [and](x1, x2) = [0] 804.82/217.34 804.82/217.34 [Yellow] = [0] 804.82/217.34 804.82/217.34 [S](x1) = [1] x1 + [0] 804.82/217.34 804.82/217.34 [0] = [0] 804.82/217.34 804.82/217.34 [colorrest^#](x1, x2, x3, x4) = [3] x1 + [2] x2 + [4] x4 + [2] 804.82/217.34 804.82/217.34 [colornode^#](x1, x2, x3) = [2] x1 + [4] x2 + [6] 804.82/217.34 804.82/217.34 [possible^#](x1, x2, x3) = [4] x2 + [6] 804.82/217.35 804.82/217.35 [possible[Ite][True][Ite]^#](x1, x2, x3, x4) = [2] x1 + [4] x3 + [2] 804.82/217.35 804.82/217.35 [colorof^#](x1, x2) = [1] 804.82/217.35 804.82/217.35 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [6] x1 + [2] x2 + [4] x3 + [0] 804.82/217.35 804.82/217.35 [graphcolour^#](x1, x2) = [4] x1 + [7] x2 + [5] 804.82/217.35 804.82/217.35 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [4] x1 + [7] x2 + [7] x3 + [7] x4 + [7] x5 + [4] 804.82/217.35 804.82/217.35 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [4] x2 + [7] x3 + [7] x4 + [7] x5 + [7] x6 + [4] 804.82/217.35 804.82/217.35 [colorof[Ite][True][Ite]^#](x1, x2, x3) = [1] 804.82/217.35 804.82/217.35 [c_2](x1, x2) = [1] x1 + [2] x2 + [0] 804.82/217.35 804.82/217.35 [c_4](x1) = [1] x1 + [0] 804.82/217.35 804.82/217.35 [c_5] = [0] 804.82/217.35 804.82/217.35 [c_7](x1) = [1] x1 + [2] 804.82/217.35 804.82/217.35 [c_13](x1) = [1] x1 + [0] 804.82/217.35 804.82/217.35 The order satisfies the following ordering constraints: 804.82/217.35 804.82/217.35 [possible(color, Cons(x, xs), colorednodes)] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes)] 804.82/217.35 804.82/217.35 [possible(color, Nil(), colorednodes)] = [1] 804.82/217.35 > [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [eqColor(NoColor(), b)] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Blue(), NoColor())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Blue(), Blue())] = [1] 804.82/217.35 > [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [eqColor(Blue(), Red())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Blue(), Yellow())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Red(), NoColor())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Red(), Blue())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Red(), Red())] = [1] 804.82/217.35 > [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [eqColor(Red(), Yellow())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Yellow(), NoColor())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Yellow(), Blue())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Yellow(), Red())] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColor(Yellow(), Yellow())] = [1] 804.82/217.35 > [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.82/217.35 >= [0] 804.82/217.35 = [CN(cs, node)] 804.82/217.35 804.82/217.35 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.82/217.35 Cons(x, xs), 804.82/217.35 node, 804.82/217.35 colorednodes)] 804.82/217.35 >= [0] 804.82/217.35 = [colornode(xs, node, colorednodes)] 804.82/217.35 804.82/217.35 [!EQ(S(x), S(y))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [!EQ(x, y)] 804.82/217.35 804.82/217.35 [!EQ(S(x), 0())] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [!EQ(0(), S(y))] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [!EQ(0(), 0())] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.82/217.35 ? [3] colorednodes + [0] 804.82/217.35 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.35 Cons(x, xs), 804.82/217.35 N(n, ns), 804.82/217.35 colorednodes)] 804.82/217.35 804.82/217.35 [colornode(Nil(), node, colorednodes)] = [0] 804.82/217.35 ? [7] 804.82/217.35 = [NotPossible()] 804.82/217.35 804.82/217.35 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.35 804.82/217.35 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [eqColorList(Nil(), Nil())] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [possible[Ite][True][Ite](False(), = [1] 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes)] 804.82/217.35 >= [1] 804.82/217.35 = [possible(color, xs, colorednodes)] 804.82/217.35 804.82/217.35 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.35 ? [3] node + [0] 804.82/217.35 = [colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.35 node, 804.82/217.35 Cons(CN(cl, N(name, adjs)), xs))] 804.82/217.35 804.82/217.35 [colorof(node, Nil())] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [NoColor()] 804.82/217.35 804.82/217.35 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.82/217.35 node, 804.82/217.35 Cons(CN(Cons(x, xs), n), xs'))] 804.82/217.35 ? [1] x + [0] 804.82/217.35 = [x] 804.82/217.35 804.82/217.35 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.82/217.35 >= [0] 804.82/217.35 = [colorof(node, xs)] 804.82/217.35 804.82/217.35 [and(True(), True())] = [0] 804.82/217.35 >= [0] 804.82/217.35 = [True()] 804.82/217.35 804.82/217.35 [and(True(), False())] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [and(False(), True())] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [and(False(), False())] = [0] 804.82/217.35 ? [1] 804.82/217.35 = [False()] 804.82/217.35 804.82/217.35 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [4] xs + [4] x + [3] cs + [2] ncs + [6] 804.82/217.35 >= [4] x + [2] ncs + [6] 804.82/217.35 = [colornode^#(ncs, x, colorednodes)] 804.82/217.35 804.82/217.35 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [2] xs + [2] x + [4] ns + [8] 804.82/217.35 > [4] ns + [6] 804.82/217.35 = [possible^#(x, ns, colorednodes)] 804.82/217.35 804.82/217.35 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [2] xs + [2] x + [4] ns + [8] 804.82/217.35 >= [2] xs + [2] x + [4] ns + [8] 804.82/217.35 = [colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.35 Cons(x, xs), 804.82/217.35 N(n, ns), 804.82/217.35 colorednodes)] 804.82/217.35 804.82/217.35 [possible^#(color, Cons(x, xs), colorednodes)] = [4] xs + [4] x + [10] 804.82/217.35 >= [4] xs + [4] x + [10] 804.82/217.35 = [c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.35 colorof(x, colorednodes)), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes), 804.82/217.35 colorof^#(x, colorednodes))] 804.82/217.35 804.82/217.35 [possible[Ite][True][Ite]^#(False(), = [4] xs + [4] x + [8] 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes)] 804.82/217.35 >= [4] xs + [8] 804.82/217.35 = [c_7(possible^#(color, xs, colorednodes))] 804.82/217.35 804.82/217.35 [colorof^#(node, Cons(CN(cl, N(name, adjs)), xs))] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.35 node, 804.82/217.35 Cons(CN(cl, N(name, adjs)), xs)))] 804.82/217.35 804.82/217.35 [colorof^#(node, Nil())] = [1] 804.82/217.35 > [0] 804.82/217.35 = [c_5()] 804.82/217.35 804.82/217.35 [colornode[Ite][True][Ite]^#(False(), = [4] node + [2] xs + [2] x + [8] 804.82/217.35 Cons(x, xs), 804.82/217.35 node, 804.82/217.35 colorednodes)] 804.82/217.35 > [4] node + [2] xs + [6] 804.82/217.35 = [colornode^#(xs, node, colorednodes)] 804.82/217.35 804.82/217.35 [graphcolour^#(Cons(x, xs), cs)] = [4] xs + [4] x + [7] cs + [9] 804.82/217.35 > [4] xs + [5] cs + [2] 804.82/217.35 = [colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)] 804.82/217.35 804.82/217.35 [graphcolour^#(Cons(x, xs), cs)] = [4] xs + [4] x + [7] cs + [9] 804.82/217.35 > [4] x + [2] cs + [6] 804.82/217.35 = [colornode^#(cs, x, Nil())] 804.82/217.35 804.82/217.35 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [4] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [4] 804.82/217.35 >= [4] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [4] 804.82/217.35 = [colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest)] 804.82/217.35 804.82/217.35 [colorrestthetrick[Ite]^#(True(), = [4] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [4] 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest)] 804.82/217.35 > [2] cs1 + [4] rest + [3] cs + [2] 804.82/217.35 = [colorrest^#(cs, cs1, colorednodes, rest)] 804.82/217.35 804.82/217.35 [colorrestthetrick[Ite]^#(False(), = [4] xs + [4] x + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [8] 804.82/217.35 Cons(x, xs), 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest)] 804.82/217.35 > [4] xs + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [4] 804.82/217.35 = [colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)] 804.82/217.35 804.82/217.35 [colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs))] = [1] 804.82/217.35 >= [1] 804.82/217.35 = [c_13(colorof^#(node, xs))] 804.82/217.35 804.82/217.35 804.82/217.35 We return to the main proof. Consider the set of all dependency 804.82/217.35 pairs 804.82/217.35 804.82/217.35 : 804.82/217.35 { 1: possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.35 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.35 colorof(x, colorednodes)), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes), 804.82/217.35 colorof^#(x, colorednodes)) 804.82/217.35 , 2: colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.35 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.35 node, 804.82/217.35 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.35 , 3: colorof^#(node, Nil()) -> c_5() 804.82/217.35 , 4: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.35 colornode^#(ncs, x, colorednodes) 804.82/217.35 , 5: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.35 possible^#(x, ns, colorednodes) 804.82/217.35 , 6: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.35 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.35 Cons(x, xs), 804.82/217.35 N(n, ns), 804.82/217.35 colorednodes) 804.82/217.35 , 7: possible[Ite][True][Ite]^#(False(), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes) 804.82/217.35 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.35 , 8: colornode[Ite][True][Ite]^#(False(), 804.82/217.35 Cons(x, xs), 804.82/217.35 node, 804.82/217.35 colorednodes) 804.82/217.35 -> colornode^#(xs, node, colorednodes) 804.82/217.35 , 9: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.35 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.35 , 10: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.35 , 11: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.35 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 , 12: colorrestthetrick[Ite]^#(True(), 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.35 , 13: colorrestthetrick[Ite]^#(False(), 804.82/217.35 Cons(x, xs), 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.35 , 14: colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.35 c_13(colorof^#(node, xs)) } 804.82/217.35 804.82/217.35 Processor 'matrix interpretation of dimension 1' induces the 804.82/217.35 complexity certificate YES(?,O(n^1)) on application of dependency 804.82/217.35 pairs {3,5,8,9,10,12,13}. These cover all (indirect) predecessors 804.82/217.35 of dependency pairs {3,4,5,6,8,9,10,11,12,13}, their number of 804.82/217.35 application is equally bounded. The dependency pairs are shifted 804.82/217.35 into the weak component. 804.82/217.35 804.82/217.35 We are left with following problem, upon which TcT provides the 804.82/217.35 certificate YES(O(1),O(n^2)). 804.82/217.35 804.82/217.35 Strict DPs: 804.82/217.35 { possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.35 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.35 colorof(x, colorednodes)), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes), 804.82/217.35 colorof^#(x, colorednodes)) 804.82/217.35 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.35 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.35 node, 804.82/217.35 Cons(CN(cl, N(name, adjs)), xs))) } 804.82/217.35 Weak DPs: 804.82/217.35 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.35 colornode^#(ncs, x, colorednodes) 804.82/217.35 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.35 possible^#(x, ns, colorednodes) 804.82/217.35 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.35 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.35 Cons(x, xs), 804.82/217.35 N(n, ns), 804.82/217.35 colorednodes) 804.82/217.35 , possible[Ite][True][Ite]^#(False(), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes) 804.82/217.35 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.35 , colorof^#(node, Nil()) -> c_5() 804.82/217.35 , colornode[Ite][True][Ite]^#(False(), 804.82/217.35 Cons(x, xs), 804.82/217.35 node, 804.82/217.35 colorednodes) 804.82/217.35 -> colornode^#(xs, node, colorednodes) 804.82/217.35 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.35 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.35 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.35 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.35 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 , colorrestthetrick[Ite]^#(True(), 804.82/217.35 cs1, 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.35 , colorrestthetrick[Ite]^#(False(), 804.82/217.35 Cons(x, xs), 804.82/217.35 cs, 804.82/217.35 ncs, 804.82/217.35 colorednodes, 804.82/217.35 rest) 804.82/217.35 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.35 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.35 c_13(colorof^#(node, xs)) } 804.82/217.35 Weak Trs: 804.82/217.35 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.35 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.35 color, 804.82/217.35 Cons(x, xs), 804.82/217.35 colorednodes) 804.82/217.35 , possible(color, Nil(), colorednodes) -> True() 804.82/217.35 , eqColor(NoColor(), b) -> False() 804.82/217.35 , eqColor(Blue(), NoColor()) -> False() 804.82/217.35 , eqColor(Blue(), Blue()) -> True() 804.82/217.35 , eqColor(Blue(), Red()) -> False() 804.82/217.35 , eqColor(Blue(), Yellow()) -> False() 804.82/217.35 , eqColor(Red(), NoColor()) -> False() 804.82/217.35 , eqColor(Red(), Blue()) -> False() 804.82/217.35 , eqColor(Red(), Red()) -> True() 804.82/217.35 , eqColor(Red(), Yellow()) -> False() 804.82/217.35 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.35 , eqColor(Yellow(), Blue()) -> False() 804.82/217.35 , eqColor(Yellow(), Red()) -> False() 804.82/217.35 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.35 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.35 CN(cs, node) 804.82/217.35 , colornode[Ite][True][Ite](False(), 804.82/217.35 Cons(x, xs), 804.82/217.35 node, 804.82/217.35 colorednodes) 804.82/217.35 -> colornode(xs, node, colorednodes) 804.82/217.35 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.35 , !EQ(S(x), 0()) -> False() 804.82/217.35 , !EQ(0(), S(y)) -> False() 804.82/217.35 , !EQ(0(), 0()) -> True() 804.82/217.35 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.35 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.35 Cons(x, xs), 804.82/217.35 N(n, ns), 804.82/217.35 colorednodes) 804.82/217.35 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.35 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.35 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.35 and(False(), eqColorList(cs1, cs2)) 804.82/217.35 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.35 and(False(), eqColorList(cs1, cs2)) 804.82/217.35 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.35 and(True(), eqColorList(cs1, cs2)) 804.82/217.35 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.35 and(False(), eqColorList(cs1, cs2)) 804.82/217.35 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.35 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.36 , eqColorList(Nil(), Nil()) -> True() 804.82/217.36 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.36 False() 804.82/217.36 , possible[Ite][True][Ite](False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> possible(color, xs, colorednodes) 804.82/217.36 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.36 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.36 node, 804.82/217.36 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.36 , colorof(node, Nil()) -> NoColor() 804.82/217.36 , colorof[Ite][True][Ite](True(), 804.82/217.36 node, 804.82/217.36 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.36 -> x 804.82/217.36 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.36 colorof(node, xs) 804.82/217.36 , and(True(), True()) -> True() 804.82/217.36 , and(True(), False()) -> False() 804.82/217.36 , and(False(), True()) -> False() 804.82/217.36 , and(False(), False()) -> False() } 804.82/217.36 Obligation: 804.82/217.36 innermost runtime complexity 804.82/217.36 Answer: 804.82/217.36 YES(O(1),O(n^2)) 804.82/217.36 804.82/217.36 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.36 closed under successors. The DPs are removed. 804.82/217.36 804.82/217.36 { colorof^#(node, Nil()) -> c_5() } 804.82/217.36 804.82/217.36 We are left with following problem, upon which TcT provides the 804.82/217.36 certificate YES(O(1),O(n^2)). 804.82/217.36 804.82/217.36 Strict DPs: 804.82/217.36 { possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.36 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.36 colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes), 804.82/217.36 colorof^#(x, colorednodes)) 804.82/217.36 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.36 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.36 node, 804.82/217.36 Cons(CN(cl, N(name, adjs)), xs))) } 804.82/217.36 Weak DPs: 804.82/217.36 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.36 colornode^#(ncs, x, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 possible^#(x, ns, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , possible[Ite][True][Ite]^#(False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.36 , colornode[Ite][True][Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode^#(xs, node, colorednodes) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.36 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.36 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.36 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 , colorrestthetrick[Ite]^#(True(), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.36 , colorrestthetrick[Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.36 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.36 c_13(colorof^#(node, xs)) } 804.82/217.36 Weak Trs: 804.82/217.36 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.36 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 , possible(color, Nil(), colorednodes) -> True() 804.82/217.36 , eqColor(NoColor(), b) -> False() 804.82/217.36 , eqColor(Blue(), NoColor()) -> False() 804.82/217.36 , eqColor(Blue(), Blue()) -> True() 804.82/217.36 , eqColor(Blue(), Red()) -> False() 804.82/217.36 , eqColor(Blue(), Yellow()) -> False() 804.82/217.36 , eqColor(Red(), NoColor()) -> False() 804.82/217.36 , eqColor(Red(), Blue()) -> False() 804.82/217.36 , eqColor(Red(), Red()) -> True() 804.82/217.36 , eqColor(Red(), Yellow()) -> False() 804.82/217.36 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.36 , eqColor(Yellow(), Blue()) -> False() 804.82/217.36 , eqColor(Yellow(), Red()) -> False() 804.82/217.36 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.36 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.36 CN(cs, node) 804.82/217.36 , colornode[Ite][True][Ite](False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode(xs, node, colorednodes) 804.82/217.36 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.36 , !EQ(S(x), 0()) -> False() 804.82/217.36 , !EQ(0(), S(y)) -> False() 804.82/217.36 , !EQ(0(), 0()) -> True() 804.82/217.36 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.36 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.36 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.36 , eqColorList(Nil(), Nil()) -> True() 804.82/217.36 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.36 False() 804.82/217.36 , possible[Ite][True][Ite](False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> possible(color, xs, colorednodes) 804.82/217.36 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.36 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.36 node, 804.82/217.36 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.36 , colorof(node, Nil()) -> NoColor() 804.82/217.36 , colorof[Ite][True][Ite](True(), 804.82/217.36 node, 804.82/217.36 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.36 -> x 804.82/217.36 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.36 colorof(node, xs) 804.82/217.36 , and(True(), True()) -> True() 804.82/217.36 , and(True(), False()) -> False() 804.82/217.36 , and(False(), True()) -> False() 804.82/217.36 , and(False(), False()) -> False() } 804.82/217.36 Obligation: 804.82/217.36 innermost runtime complexity 804.82/217.36 Answer: 804.82/217.36 YES(O(1),O(n^2)) 804.82/217.36 804.82/217.36 We decompose the input problem according to the dependency graph 804.82/217.36 into the upper component 804.82/217.36 804.82/217.36 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.36 colornode^#(ncs, x, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 possible^#(x, ns, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.36 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.36 colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes), 804.82/217.36 colorof^#(x, colorednodes)) 804.82/217.36 , possible[Ite][True][Ite]^#(False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.36 , colornode[Ite][True][Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode^#(xs, node, colorednodes) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.36 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.36 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.36 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 , colorrestthetrick[Ite]^#(True(), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.36 , colorrestthetrick[Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.36 804.82/217.36 and lower component 804.82/217.36 804.82/217.36 { colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.36 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.36 node, 804.82/217.36 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.36 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.36 c_13(colorof^#(node, xs)) } 804.82/217.36 804.82/217.36 Further, following extension rules are added to the lower 804.82/217.36 component. 804.82/217.36 804.82/217.36 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.36 colornode^#(ncs, x, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 possible^#(x, ns, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.36 possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.36 colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.36 colorof^#(x, colorednodes) 804.82/217.36 , possible[Ite][True][Ite]^#(False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> possible^#(color, xs, colorednodes) 804.82/217.36 , colornode[Ite][True][Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode^#(xs, node, colorednodes) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.36 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.36 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.36 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 , colorrestthetrick[Ite]^#(True(), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.36 , colorrestthetrick[Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.36 804.82/217.36 TcT solves the upper component with certificate YES(O(1),O(n^1)). 804.82/217.36 804.82/217.36 Sub-proof: 804.82/217.36 ---------- 804.82/217.36 We are left with following problem, upon which TcT provides the 804.82/217.36 certificate YES(O(1),O(n^1)). 804.82/217.36 804.82/217.36 Strict DPs: 804.82/217.36 { possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.36 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.36 colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes), 804.82/217.36 colorof^#(x, colorednodes)) } 804.82/217.36 Weak DPs: 804.82/217.36 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.36 colornode^#(ncs, x, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 possible^#(x, ns, colorednodes) 804.82/217.36 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , possible[Ite][True][Ite]^#(False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.36 , colornode[Ite][True][Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode^#(xs, node, colorednodes) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.36 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.36 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.36 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.36 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 , colorrestthetrick[Ite]^#(True(), 804.82/217.36 cs1, 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.36 , colorrestthetrick[Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.36 Weak Trs: 804.82/217.36 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.36 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 , possible(color, Nil(), colorednodes) -> True() 804.82/217.36 , eqColor(NoColor(), b) -> False() 804.82/217.36 , eqColor(Blue(), NoColor()) -> False() 804.82/217.36 , eqColor(Blue(), Blue()) -> True() 804.82/217.36 , eqColor(Blue(), Red()) -> False() 804.82/217.36 , eqColor(Blue(), Yellow()) -> False() 804.82/217.36 , eqColor(Red(), NoColor()) -> False() 804.82/217.36 , eqColor(Red(), Blue()) -> False() 804.82/217.36 , eqColor(Red(), Red()) -> True() 804.82/217.36 , eqColor(Red(), Yellow()) -> False() 804.82/217.36 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.36 , eqColor(Yellow(), Blue()) -> False() 804.82/217.36 , eqColor(Yellow(), Red()) -> False() 804.82/217.36 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.36 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.36 CN(cs, node) 804.82/217.36 , colornode[Ite][True][Ite](False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode(xs, node, colorednodes) 804.82/217.36 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.36 , !EQ(S(x), 0()) -> False() 804.82/217.36 , !EQ(0(), S(y)) -> False() 804.82/217.36 , !EQ(0(), 0()) -> True() 804.82/217.36 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes) 804.82/217.36 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.36 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.36 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.36 and(False(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.36 and(True(), eqColorList(cs1, cs2)) 804.82/217.36 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.36 , eqColorList(Nil(), Nil()) -> True() 804.82/217.36 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.36 False() 804.82/217.36 , possible[Ite][True][Ite](False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> possible(color, xs, colorednodes) 804.82/217.36 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.36 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.36 node, 804.82/217.36 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.36 , colorof(node, Nil()) -> NoColor() 804.82/217.36 , colorof[Ite][True][Ite](True(), 804.82/217.36 node, 804.82/217.36 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.36 -> x 804.82/217.36 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.36 colorof(node, xs) 804.82/217.36 , and(True(), True()) -> True() 804.82/217.36 , and(True(), False()) -> False() 804.82/217.36 , and(False(), True()) -> False() 804.82/217.36 , and(False(), False()) -> False() } 804.82/217.36 Obligation: 804.82/217.36 innermost runtime complexity 804.82/217.36 Answer: 804.82/217.36 YES(O(1),O(n^1)) 804.82/217.36 804.82/217.36 We use the processor 'matrix interpretation of dimension 1' to 804.82/217.36 orient following rules strictly. 804.82/217.36 804.82/217.36 DPs: 804.82/217.36 { 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.36 colornode^#(ncs, x, colorednodes) 804.82/217.36 , 3: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.36 possible^#(x, ns, colorednodes) 804.82/217.36 , 5: possible[Ite][True][Ite]^#(False(), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes) 804.82/217.36 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.36 , 6: colornode[Ite][True][Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes) 804.82/217.36 -> colornode^#(xs, node, colorednodes) 804.82/217.36 , 7: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.36 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.36 , 8: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.36 , 11: colorrestthetrick[Ite]^#(False(), 804.82/217.36 Cons(x, xs), 804.82/217.36 cs, 804.82/217.36 ncs, 804.82/217.36 colorednodes, 804.82/217.36 rest) 804.82/217.36 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.36 804.82/217.36 Sub-proof: 804.82/217.36 ---------- 804.82/217.36 The following argument positions are usable: 804.82/217.36 Uargs(c_2) = {1}, Uargs(c_7) = {1} 804.82/217.36 804.82/217.36 TcT has computed the following constructor-based matrix 804.82/217.36 interpretation satisfying not(EDA). 804.82/217.36 804.82/217.36 [True] = [0] 804.82/217.36 804.82/217.36 [NoColor] = [0] 804.82/217.36 804.82/217.36 [possible](x1, x2, x3) = [0] 804.82/217.36 804.82/217.36 [eqColor](x1, x2) = [0] 804.82/217.36 804.82/217.36 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.82/217.36 804.82/217.36 [CN](x1, x2) = [0] 804.82/217.36 804.82/217.36 [!EQ](x1, x2) = [0] 804.82/217.36 804.82/217.36 [Blue] = [0] 804.82/217.36 804.82/217.36 [Cons](x1, x2) = [1] x1 + [1] x2 + [1] 804.82/217.36 804.82/217.36 [colornode](x1, x2, x3) = [0] 804.82/217.36 804.82/217.36 [NotPossible] = [7] 804.82/217.36 804.82/217.36 [eqColorList](x1, x2) = [0] 804.82/217.36 804.82/217.36 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.82/217.36 804.82/217.36 [False] = [0] 804.82/217.36 804.82/217.36 [Red] = [0] 804.82/217.36 804.82/217.36 [colorof](x1, x2) = [0] 804.82/217.36 804.82/217.36 [N](x1, x2) = [1] x2 + [0] 804.82/217.36 804.82/217.36 [Nil] = [0] 804.82/217.36 804.82/217.36 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.82/217.36 804.82/217.36 [and](x1, x2) = [0] 804.82/217.36 804.82/217.36 [Yellow] = [0] 804.82/217.36 804.82/217.36 [S](x1) = [1] x1 + [0] 804.82/217.36 804.82/217.36 [0] = [0] 804.82/217.36 804.82/217.36 [colorrest^#](x1, x2, x3, x4) = [3] x1 + [2] x2 + [1] x4 + [0] 804.82/217.36 804.82/217.36 [colornode^#](x1, x2, x3) = [1] x1 + [1] x2 + [0] 804.82/217.36 804.82/217.36 [possible^#](x1, x2, x3) = [1] x2 + [0] 804.82/217.36 804.82/217.36 [possible[Ite][True][Ite]^#](x1, x2, x3, x4) = [1] x3 + [0] 804.82/217.36 804.82/217.36 [colorof^#](x1, x2) = [7] x1 + [7] x2 + [7] 804.82/217.36 804.82/217.36 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [1] x2 + [1] x3 + [0] 804.82/217.36 804.82/217.36 [graphcolour^#](x1, x2) = [1] x1 + [7] x2 + [0] 804.82/217.36 804.82/217.36 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [2] x1 + [7] x2 + [7] x3 + [7] x4 + [7] x5 + [0] 804.82/217.36 804.82/217.36 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [2] x2 + [7] x3 + [7] x4 + [7] x5 + [7] x6 + [0] 804.82/217.36 804.82/217.36 [c_2](x1, x2) = [1] x1 + [0] 804.82/217.36 804.82/217.36 [c_7](x1) = [1] x1 + [0] 804.82/217.36 804.82/217.36 The order satisfies the following ordering constraints: 804.82/217.36 804.82/217.36 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.82/217.36 ? [3] color + [3] colorednodes + [0] 804.82/217.36 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.36 color, 804.82/217.36 Cons(x, xs), 804.82/217.36 colorednodes)] 804.82/217.36 804.82/217.36 [possible(color, Nil(), colorednodes)] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [True()] 804.82/217.36 804.82/217.36 [eqColor(NoColor(), b)] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Blue(), NoColor())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Blue(), Blue())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [True()] 804.82/217.36 804.82/217.36 [eqColor(Blue(), Red())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Blue(), Yellow())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Red(), NoColor())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Red(), Blue())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Red(), Red())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [True()] 804.82/217.36 804.82/217.36 [eqColor(Red(), Yellow())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Yellow(), NoColor())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Yellow(), Blue())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Yellow(), Red())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [eqColor(Yellow(), Yellow())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [True()] 804.82/217.36 804.82/217.36 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.82/217.36 >= [0] 804.82/217.36 = [CN(cs, node)] 804.82/217.36 804.82/217.36 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.82/217.36 Cons(x, xs), 804.82/217.36 node, 804.82/217.36 colorednodes)] 804.82/217.36 >= [0] 804.82/217.36 = [colornode(xs, node, colorednodes)] 804.82/217.36 804.82/217.36 [!EQ(S(x), S(y))] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [!EQ(x, y)] 804.82/217.36 804.82/217.36 [!EQ(S(x), 0())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [!EQ(0(), S(y))] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [False()] 804.82/217.36 804.82/217.36 [!EQ(0(), 0())] = [0] 804.82/217.36 >= [0] 804.82/217.36 = [True()] 804.82/217.36 804.82/217.36 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.82/217.36 ? [3] colorednodes + [0] 804.82/217.36 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.36 Cons(x, xs), 804.82/217.36 N(n, ns), 804.82/217.36 colorednodes)] 804.82/217.36 804.82/217.37 [colornode(Nil(), node, colorednodes)] = [0] 804.82/217.37 ? [7] 804.82/217.37 = [NotPossible()] 804.82/217.37 804.82/217.37 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.37 804.82/217.37 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [eqColorList(Nil(), Nil())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [True()] 804.82/217.37 804.82/217.37 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes)] 804.82/217.37 >= [0] 804.82/217.37 = [possible(color, xs, colorednodes)] 804.82/217.37 804.82/217.37 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.37 ? [3] node + [0] 804.82/217.37 = [colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.37 node, 804.82/217.37 Cons(CN(cl, N(name, adjs)), xs))] 804.82/217.37 804.82/217.37 [colorof(node, Nil())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [NoColor()] 804.82/217.37 804.82/217.37 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.82/217.37 node, 804.82/217.37 Cons(CN(Cons(x, xs), n), xs'))] 804.82/217.37 ? [1] x + [0] 804.82/217.37 = [x] 804.82/217.37 804.82/217.37 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.82/217.37 >= [0] 804.82/217.37 = [colorof(node, xs)] 804.82/217.37 804.82/217.37 [and(True(), True())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [True()] 804.82/217.37 804.82/217.37 [and(True(), False())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [and(False(), True())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [and(False(), False())] = [0] 804.82/217.37 >= [0] 804.82/217.37 = [False()] 804.82/217.37 804.82/217.37 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [1] xs + [1] x + [3] cs + [2] ncs + [1] 804.82/217.37 > [1] x + [1] ncs + [0] 804.82/217.37 = [colornode^#(ncs, x, colorednodes)] 804.82/217.37 804.82/217.37 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [1] xs + [1] x + [1] ns + [1] 804.82/217.37 > [1] ns + [0] 804.82/217.37 = [possible^#(x, ns, colorednodes)] 804.82/217.37 804.82/217.37 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [1] xs + [1] x + [1] ns + [1] 804.82/217.37 >= [1] xs + [1] x + [1] ns + [1] 804.82/217.37 = [colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.37 Cons(x, xs), 804.82/217.37 N(n, ns), 804.82/217.37 colorednodes)] 804.82/217.37 804.82/217.37 [possible^#(color, Cons(x, xs), colorednodes)] = [1] xs + [1] x + [1] 804.82/217.37 >= [1] xs + [1] x + [1] 804.82/217.37 = [c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.37 colorof(x, colorednodes)), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes), 804.82/217.37 colorof^#(x, colorednodes))] 804.82/217.37 804.82/217.37 [possible[Ite][True][Ite]^#(False(), = [1] xs + [1] x + [1] 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes)] 804.82/217.37 > [1] xs + [0] 804.82/217.37 = [c_7(possible^#(color, xs, colorednodes))] 804.82/217.37 804.82/217.37 [colornode[Ite][True][Ite]^#(False(), = [1] node + [1] xs + [1] x + [1] 804.82/217.37 Cons(x, xs), 804.82/217.37 node, 804.82/217.37 colorednodes)] 804.82/217.37 > [1] node + [1] xs + [0] 804.82/217.37 = [colornode^#(xs, node, colorednodes)] 804.82/217.37 804.82/217.37 [graphcolour^#(Cons(x, xs), cs)] = [1] xs + [1] x + [7] cs + [1] 804.82/217.37 > [1] xs + [5] cs + [0] 804.82/217.37 = [colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)] 804.82/217.37 804.82/217.37 [graphcolour^#(Cons(x, xs), cs)] = [1] xs + [1] x + [7] cs + [1] 804.82/217.37 > [1] x + [1] cs + [0] 804.82/217.37 = [colornode^#(cs, x, Nil())] 804.82/217.37 804.82/217.37 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [2] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [0] 804.82/217.37 >= [2] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [0] 804.82/217.37 = [colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest)] 804.82/217.37 804.82/217.37 [colorrestthetrick[Ite]^#(True(), = [2] cs1 + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [0] 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest)] 804.82/217.37 >= [2] cs1 + [1] rest + [3] cs + [0] 804.82/217.37 = [colorrest^#(cs, cs1, colorednodes, rest)] 804.82/217.37 804.82/217.37 [colorrestthetrick[Ite]^#(False(), = [2] xs + [2] x + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.37 Cons(x, xs), 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest)] 804.82/217.37 > [2] xs + [7] rest + [7] colorednodes + [7] cs + [7] ncs + [0] 804.82/217.37 = [colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)] 804.82/217.37 804.82/217.37 804.82/217.37 We return to the main proof. Consider the set of all dependency 804.82/217.37 pairs 804.82/217.37 804.82/217.37 : 804.82/217.37 { 1: possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.37 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.37 colorof(x, colorednodes)), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes), 804.82/217.37 colorof^#(x, colorednodes)) 804.82/217.37 , 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.37 colornode^#(ncs, x, colorednodes) 804.82/217.37 , 3: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 possible^#(x, ns, colorednodes) 804.82/217.37 , 4: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.37 Cons(x, xs), 804.82/217.37 N(n, ns), 804.82/217.37 colorednodes) 804.82/217.37 , 5: possible[Ite][True][Ite]^#(False(), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes) 804.82/217.37 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.37 , 6: colornode[Ite][True][Ite]^#(False(), 804.82/217.37 Cons(x, xs), 804.82/217.37 node, 804.82/217.37 colorednodes) 804.82/217.37 -> colornode^#(xs, node, colorednodes) 804.82/217.37 , 7: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.37 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.37 , 8: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.37 , 9: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.37 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 , 10: colorrestthetrick[Ite]^#(True(), 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.37 , 11: colorrestthetrick[Ite]^#(False(), 804.82/217.37 Cons(x, xs), 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.37 804.82/217.37 Processor 'matrix interpretation of dimension 1' induces the 804.82/217.37 complexity certificate YES(?,O(n^1)) on application of dependency 804.82/217.37 pairs {2,3,5,6,7,8,11}. These cover all (indirect) predecessors of 804.82/217.37 dependency pairs {1,2,3,4,5,6,7,8,9,10,11}, their number of 804.82/217.37 application is equally bounded. The dependency pairs are shifted 804.82/217.37 into the weak component. 804.82/217.37 804.82/217.37 We are left with following problem, upon which TcT provides the 804.82/217.37 certificate YES(O(1),O(1)). 804.82/217.37 804.82/217.37 Weak DPs: 804.82/217.37 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.37 colornode^#(ncs, x, colorednodes) 804.82/217.37 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 possible^#(x, ns, colorednodes) 804.82/217.37 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.37 Cons(x, xs), 804.82/217.37 N(n, ns), 804.82/217.37 colorednodes) 804.82/217.37 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.37 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.37 colorof(x, colorednodes)), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes), 804.82/217.37 colorof^#(x, colorednodes)) 804.82/217.37 , possible[Ite][True][Ite]^#(False(), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes) 804.82/217.37 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.37 , colornode[Ite][True][Ite]^#(False(), 804.82/217.37 Cons(x, xs), 804.82/217.37 node, 804.82/217.37 colorednodes) 804.82/217.37 -> colornode^#(xs, node, colorednodes) 804.82/217.37 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.37 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.37 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.37 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.37 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 , colorrestthetrick[Ite]^#(True(), 804.82/217.37 cs1, 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.37 , colorrestthetrick[Ite]^#(False(), 804.82/217.37 Cons(x, xs), 804.82/217.37 cs, 804.82/217.37 ncs, 804.82/217.37 colorednodes, 804.82/217.37 rest) 804.82/217.37 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.37 Weak Trs: 804.82/217.37 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.37 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes) 804.82/217.37 , possible(color, Nil(), colorednodes) -> True() 804.82/217.37 , eqColor(NoColor(), b) -> False() 804.82/217.37 , eqColor(Blue(), NoColor()) -> False() 804.82/217.37 , eqColor(Blue(), Blue()) -> True() 804.82/217.37 , eqColor(Blue(), Red()) -> False() 804.82/217.37 , eqColor(Blue(), Yellow()) -> False() 804.82/217.37 , eqColor(Red(), NoColor()) -> False() 804.82/217.37 , eqColor(Red(), Blue()) -> False() 804.82/217.37 , eqColor(Red(), Red()) -> True() 804.82/217.37 , eqColor(Red(), Yellow()) -> False() 804.82/217.37 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.37 , eqColor(Yellow(), Blue()) -> False() 804.82/217.37 , eqColor(Yellow(), Red()) -> False() 804.82/217.37 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.37 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.37 CN(cs, node) 804.82/217.37 , colornode[Ite][True][Ite](False(), 804.82/217.37 Cons(x, xs), 804.82/217.37 node, 804.82/217.37 colorednodes) 804.82/217.37 -> colornode(xs, node, colorednodes) 804.82/217.37 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.37 , !EQ(S(x), 0()) -> False() 804.82/217.37 , !EQ(0(), S(y)) -> False() 804.82/217.37 , !EQ(0(), 0()) -> True() 804.82/217.37 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.37 Cons(x, xs), 804.82/217.37 N(n, ns), 804.82/217.37 colorednodes) 804.82/217.37 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.37 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.37 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.37 and(True(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.37 and(True(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.37 and(False(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.37 and(True(), eqColorList(cs1, cs2)) 804.82/217.37 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.37 , eqColorList(Nil(), Nil()) -> True() 804.82/217.37 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.37 False() 804.82/217.37 , possible[Ite][True][Ite](False(), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.37 colorednodes) 804.82/217.37 -> possible(color, xs, colorednodes) 804.82/217.37 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.37 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.37 node, 804.82/217.37 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.37 , colorof(node, Nil()) -> NoColor() 804.82/217.37 , colorof[Ite][True][Ite](True(), 804.82/217.37 node, 804.82/217.37 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.37 -> x 804.82/217.37 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.37 colorof(node, xs) 804.82/217.37 , and(True(), True()) -> True() 804.82/217.37 , and(True(), False()) -> False() 804.82/217.37 , and(False(), True()) -> False() 804.82/217.37 , and(False(), False()) -> False() } 804.82/217.37 Obligation: 804.82/217.37 innermost runtime complexity 804.82/217.37 Answer: 804.82/217.37 YES(O(1),O(1)) 804.82/217.37 804.82/217.37 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.37 closed under successors. The DPs are removed. 804.82/217.37 804.82/217.37 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.37 colornode^#(ncs, x, colorednodes) 804.82/217.37 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 possible^#(x, ns, colorednodes) 804.82/217.37 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.37 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.37 Cons(x, xs), 804.82/217.37 N(n, ns), 804.82/217.37 colorednodes) 804.82/217.37 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.37 c_2(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.37 colorof(x, colorednodes)), 804.82/217.37 color, 804.82/217.37 Cons(x, xs), 804.82/217.38 colorednodes), 804.82/217.38 colorof^#(x, colorednodes)) 804.82/217.38 , possible[Ite][True][Ite]^#(False(), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 -> c_7(possible^#(color, xs, colorednodes)) 804.82/217.38 , colornode[Ite][True][Ite]^#(False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes) 804.82/217.38 -> colornode^#(xs, node, colorednodes) 804.82/217.38 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.38 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.38 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.38 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.38 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 , colorrestthetrick[Ite]^#(True(), 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.38 , colorrestthetrick[Ite]^#(False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 804.82/217.38 804.82/217.38 We are left with following problem, upon which TcT provides the 804.82/217.38 certificate YES(O(1),O(1)). 804.82/217.38 804.82/217.38 Weak Trs: 804.82/217.38 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.38 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 , possible(color, Nil(), colorednodes) -> True() 804.82/217.38 , eqColor(NoColor(), b) -> False() 804.82/217.38 , eqColor(Blue(), NoColor()) -> False() 804.82/217.38 , eqColor(Blue(), Blue()) -> True() 804.82/217.38 , eqColor(Blue(), Red()) -> False() 804.82/217.38 , eqColor(Blue(), Yellow()) -> False() 804.82/217.38 , eqColor(Red(), NoColor()) -> False() 804.82/217.38 , eqColor(Red(), Blue()) -> False() 804.82/217.38 , eqColor(Red(), Red()) -> True() 804.82/217.38 , eqColor(Red(), Yellow()) -> False() 804.82/217.38 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.38 , eqColor(Yellow(), Blue()) -> False() 804.82/217.38 , eqColor(Yellow(), Red()) -> False() 804.82/217.38 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.38 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.38 CN(cs, node) 804.82/217.38 , colornode[Ite][True][Ite](False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes) 804.82/217.38 -> colornode(xs, node, colorednodes) 804.82/217.38 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.38 , !EQ(S(x), 0()) -> False() 804.82/217.38 , !EQ(0(), S(y)) -> False() 804.82/217.38 , !EQ(0(), 0()) -> True() 804.82/217.38 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.38 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.38 Cons(x, xs), 804.82/217.38 N(n, ns), 804.82/217.38 colorednodes) 804.82/217.38 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.38 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.38 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.38 , eqColorList(Nil(), Nil()) -> True() 804.82/217.38 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.38 False() 804.82/217.38 , possible[Ite][True][Ite](False(), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 -> possible(color, xs, colorednodes) 804.82/217.38 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.38 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.38 , colorof(node, Nil()) -> NoColor() 804.82/217.38 , colorof[Ite][True][Ite](True(), 804.82/217.38 node, 804.82/217.38 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.38 -> x 804.82/217.38 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.38 colorof(node, xs) 804.82/217.38 , and(True(), True()) -> True() 804.82/217.38 , and(True(), False()) -> False() 804.82/217.38 , and(False(), True()) -> False() 804.82/217.38 , and(False(), False()) -> False() } 804.82/217.38 Obligation: 804.82/217.38 innermost runtime complexity 804.82/217.38 Answer: 804.82/217.38 YES(O(1),O(1)) 804.82/217.38 804.82/217.38 No rule is usable, rules are removed from the input problem. 804.82/217.38 804.82/217.38 We are left with following problem, upon which TcT provides the 804.82/217.38 certificate YES(O(1),O(1)). 804.82/217.38 804.82/217.38 Rules: Empty 804.82/217.38 Obligation: 804.82/217.38 innermost runtime complexity 804.82/217.38 Answer: 804.82/217.38 YES(O(1),O(1)) 804.82/217.38 804.82/217.38 Empty rules are trivially bounded 804.82/217.38 804.82/217.38 We return to the main proof. 804.82/217.38 804.82/217.38 We are left with following problem, upon which TcT provides the 804.82/217.38 certificate YES(O(1),O(n^1)). 804.82/217.38 804.82/217.38 Strict DPs: 804.82/217.38 { colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.38 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs))) } 804.82/217.38 Weak DPs: 804.82/217.38 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.38 colornode^#(ncs, x, colorednodes) 804.82/217.38 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.38 possible^#(x, ns, colorednodes) 804.82/217.38 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.38 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.38 Cons(x, xs), 804.82/217.38 N(n, ns), 804.82/217.38 colorednodes) 804.82/217.38 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.38 possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.38 colorof(x, colorednodes)), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.38 colorof^#(x, colorednodes) 804.82/217.38 , possible[Ite][True][Ite]^#(False(), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 -> possible^#(color, xs, colorednodes) 804.82/217.38 , colornode[Ite][True][Ite]^#(False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes) 804.82/217.38 -> colornode^#(xs, node, colorednodes) 804.82/217.38 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.38 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.38 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.38 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.38 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 , colorrestthetrick[Ite]^#(True(), 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.38 , colorrestthetrick[Ite]^#(False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest) 804.82/217.38 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.38 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.38 c_13(colorof^#(node, xs)) } 804.82/217.38 Weak Trs: 804.82/217.38 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.38 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 , possible(color, Nil(), colorednodes) -> True() 804.82/217.38 , eqColor(NoColor(), b) -> False() 804.82/217.38 , eqColor(Blue(), NoColor()) -> False() 804.82/217.38 , eqColor(Blue(), Blue()) -> True() 804.82/217.38 , eqColor(Blue(), Red()) -> False() 804.82/217.38 , eqColor(Blue(), Yellow()) -> False() 804.82/217.38 , eqColor(Red(), NoColor()) -> False() 804.82/217.38 , eqColor(Red(), Blue()) -> False() 804.82/217.38 , eqColor(Red(), Red()) -> True() 804.82/217.38 , eqColor(Red(), Yellow()) -> False() 804.82/217.38 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.38 , eqColor(Yellow(), Blue()) -> False() 804.82/217.38 , eqColor(Yellow(), Red()) -> False() 804.82/217.38 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.38 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.38 CN(cs, node) 804.82/217.38 , colornode[Ite][True][Ite](False(), 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes) 804.82/217.38 -> colornode(xs, node, colorednodes) 804.82/217.38 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.38 , !EQ(S(x), 0()) -> False() 804.82/217.38 , !EQ(0(), S(y)) -> False() 804.82/217.38 , !EQ(0(), 0()) -> True() 804.82/217.38 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.38 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.38 Cons(x, xs), 804.82/217.38 N(n, ns), 804.82/217.38 colorednodes) 804.82/217.38 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.38 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.38 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.38 and(False(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.38 and(True(), eqColorList(cs1, cs2)) 804.82/217.38 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.38 , eqColorList(Nil(), Nil()) -> True() 804.82/217.38 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.38 False() 804.82/217.38 , possible[Ite][True][Ite](False(), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes) 804.82/217.38 -> possible(color, xs, colorednodes) 804.82/217.38 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.38 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.38 , colorof(node, Nil()) -> NoColor() 804.82/217.38 , colorof[Ite][True][Ite](True(), 804.82/217.38 node, 804.82/217.38 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.38 -> x 804.82/217.38 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.38 colorof(node, xs) 804.82/217.38 , and(True(), True()) -> True() 804.82/217.38 , and(True(), False()) -> False() 804.82/217.38 , and(False(), True()) -> False() 804.82/217.38 , and(False(), False()) -> False() } 804.82/217.38 Obligation: 804.82/217.38 innermost runtime complexity 804.82/217.38 Answer: 804.82/217.38 YES(O(1),O(n^1)) 804.82/217.38 804.82/217.38 We use the processor 'matrix interpretation of dimension 1' to 804.82/217.38 orient following rules strictly. 804.82/217.38 804.82/217.38 DPs: 804.82/217.38 { 1: colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.38 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.38 , 9: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.38 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.38 , 10: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) } 804.82/217.38 804.82/217.38 Sub-proof: 804.82/217.38 ---------- 804.82/217.38 The following argument positions are usable: 804.82/217.38 Uargs(c_4) = {1}, Uargs(c_13) = {1} 804.82/217.38 804.82/217.38 TcT has computed the following constructor-based matrix 804.82/217.38 interpretation satisfying not(EDA). 804.82/217.38 804.82/217.38 [True] = [0] 804.82/217.38 804.82/217.38 [NoColor] = [0] 804.82/217.38 804.82/217.38 [possible](x1, x2, x3) = [0] 804.82/217.38 804.82/217.38 [eqColor](x1, x2) = [0] 804.82/217.38 804.82/217.38 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [3] x4 + [0] 804.82/217.38 804.82/217.38 [CN](x1, x2) = [0] 804.82/217.38 804.82/217.38 [!EQ](x1, x2) = [0] 804.82/217.38 804.82/217.38 [Blue] = [0] 804.82/217.38 804.82/217.38 [Cons](x1, x2) = [1] x2 + [1] 804.82/217.38 804.82/217.38 [colornode](x1, x2, x3) = [0] 804.82/217.38 804.82/217.38 [NotPossible] = [6] 804.82/217.38 804.82/217.38 [eqColorList](x1, x2) = [0] 804.82/217.38 804.82/217.38 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [3] x2 + [3] x4 + [0] 804.82/217.38 804.82/217.38 [False] = [0] 804.82/217.38 804.82/217.38 [Red] = [0] 804.82/217.38 804.82/217.38 [colorof](x1, x2) = [0] 804.82/217.38 804.82/217.38 [N](x1, x2) = [0] 804.82/217.38 804.82/217.38 [Nil] = [0] 804.82/217.38 804.82/217.38 [colorof[Ite][True][Ite]](x1, x2, x3) = [3] x2 + [0] 804.82/217.38 804.82/217.38 [and](x1, x2) = [0] 804.82/217.38 804.82/217.38 [Yellow] = [0] 804.82/217.38 804.82/217.38 [S](x1) = [1] x1 + [0] 804.82/217.38 804.82/217.38 [0] = [0] 804.82/217.38 804.82/217.38 [colorrest^#](x1, x2, x3, x4) = [7] x1 + [4] x3 + [2] x4 + [2] 804.82/217.38 804.82/217.38 [colornode^#](x1, x2, x3) = [4] x3 + [4] 804.82/217.38 804.82/217.38 [possible^#](x1, x2, x3) = [4] x3 + [4] 804.82/217.38 804.82/217.38 [possible[Ite][True][Ite]^#](x1, x2, x3, x4) = [4] x4 + [4] 804.82/217.38 804.82/217.38 [colorof^#](x1, x2) = [4] x2 + [4] 804.82/217.38 804.82/217.38 [colornode[Ite][True][Ite]^#](x1, x2, x3, x4) = [4] x3 + [4] x4 + [4] 804.82/217.38 804.82/217.38 [graphcolour^#](x1, x2) = [4] x1 + [7] x2 + [5] 804.82/217.38 804.82/217.38 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [7] x2 + [7] x3 + [7] x4 + [7] x5 + [2] 804.82/217.38 804.82/217.38 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [7] x3 + [7] x4 + [7] x5 + [7] x6 + [2] 804.82/217.38 804.82/217.38 [colorof[Ite][True][Ite]^#](x1, x2, x3) = [4] x3 + [0] 804.82/217.38 804.82/217.38 [c_4](x1) = [1] x1 + [1] 804.82/217.38 804.82/217.38 [c_13](x1) = [1] x1 + [0] 804.82/217.38 804.82/217.38 The order satisfies the following ordering constraints: 804.82/217.38 804.82/217.38 [possible(color, Cons(x, xs), colorednodes)] = [0] 804.82/217.38 ? [3] color + [3] colorednodes + [0] 804.82/217.38 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes)] 804.82/217.38 804.82/217.38 [possible(color, Nil(), colorednodes)] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [eqColor(NoColor(), b)] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Blue(), NoColor())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Blue(), Blue())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [eqColor(Blue(), Red())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Blue(), Yellow())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Red(), NoColor())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Red(), Blue())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Red(), Red())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [eqColor(Red(), Yellow())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Yellow(), NoColor())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Yellow(), Blue())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Yellow(), Red())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColor(Yellow(), Yellow())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [3] colorednodes + [0] 804.82/217.38 >= [0] 804.82/217.38 = [CN(cs, node)] 804.82/217.38 804.82/217.38 [colornode[Ite][True][Ite](False(), = [3] colorednodes + [0] 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes)] 804.82/217.38 >= [0] 804.82/217.38 = [colornode(xs, node, colorednodes)] 804.82/217.38 804.82/217.38 [!EQ(S(x), S(y))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [!EQ(x, y)] 804.82/217.38 804.82/217.38 [!EQ(S(x), 0())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [!EQ(0(), S(y))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [!EQ(0(), 0())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [0] 804.82/217.38 ? [3] colorednodes + [0] 804.82/217.38 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.38 Cons(x, xs), 804.82/217.38 N(n, ns), 804.82/217.38 colorednodes)] 804.82/217.38 804.82/217.38 [colornode(Nil(), node, colorednodes)] = [0] 804.82/217.38 ? [6] 804.82/217.38 = [NotPossible()] 804.82/217.38 804.82/217.38 [eqColorList(Cons(c1, cs1), Nil())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(False(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [and(True(), eqColorList(cs1, cs2))] 804.82/217.38 804.82/217.38 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [eqColorList(Nil(), Nil())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [3] color + [3] colorednodes + [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [possible[Ite][True][Ite](False(), = [3] color + [3] colorednodes + [0] 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes)] 804.82/217.38 >= [0] 804.82/217.38 = [possible(color, xs, colorednodes)] 804.82/217.38 804.82/217.38 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [0] 804.82/217.38 ? [3] node + [0] 804.82/217.38 = [colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs))] 804.82/217.38 804.82/217.38 [colorof(node, Nil())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [NoColor()] 804.82/217.38 804.82/217.38 [colorof[Ite][True][Ite](True(), = [3] node + [0] 804.82/217.38 node, 804.82/217.38 Cons(CN(Cons(x, xs), n), xs'))] 804.82/217.38 ? [1] x + [0] 804.82/217.38 = [x] 804.82/217.38 804.82/217.38 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [3] node + [0] 804.82/217.38 >= [0] 804.82/217.38 = [colorof(node, xs)] 804.82/217.38 804.82/217.38 [and(True(), True())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [True()] 804.82/217.38 804.82/217.38 [and(True(), False())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [and(False(), True())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [and(False(), False())] = [0] 804.82/217.38 >= [0] 804.82/217.38 = [False()] 804.82/217.38 804.82/217.38 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [2] xs + [4] colorednodes + [7] cs + [4] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [colornode^#(ncs, x, colorednodes)] 804.82/217.38 804.82/217.38 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [4] colorednodes + [4] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [possible^#(x, ns, colorednodes)] 804.82/217.38 804.82/217.38 [colornode^#(Cons(x, xs), N(n, ns), colorednodes)] = [4] colorednodes + [4] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.38 Cons(x, xs), 804.82/217.38 N(n, ns), 804.82/217.38 colorednodes)] 804.82/217.38 804.82/217.38 [possible^#(color, Cons(x, xs), colorednodes)] = [4] colorednodes + [4] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.38 colorof(x, colorednodes)), 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes)] 804.82/217.38 804.82/217.38 [possible^#(color, Cons(x, xs), colorednodes)] = [4] colorednodes + [4] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [colorof^#(x, colorednodes)] 804.82/217.38 804.82/217.38 [possible[Ite][True][Ite]^#(False(), = [4] colorednodes + [4] 804.82/217.38 color, 804.82/217.38 Cons(x, xs), 804.82/217.38 colorednodes)] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [possible^#(color, xs, colorednodes)] 804.82/217.38 804.82/217.38 [colorof^#(node, Cons(CN(cl, N(name, adjs)), xs))] = [4] xs + [8] 804.82/217.38 > [4] xs + [5] 804.82/217.38 = [c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.38 node, 804.82/217.38 Cons(CN(cl, N(name, adjs)), xs)))] 804.82/217.38 804.82/217.38 [colornode[Ite][True][Ite]^#(False(), = [4] node + [4] colorednodes + [4] 804.82/217.38 Cons(x, xs), 804.82/217.38 node, 804.82/217.38 colorednodes)] 804.82/217.38 >= [4] colorednodes + [4] 804.82/217.38 = [colornode^#(xs, node, colorednodes)] 804.82/217.38 804.82/217.38 [graphcolour^#(Cons(x, xs), cs)] = [4] xs + [7] cs + [9] 804.82/217.38 > [2] xs + [7] cs + [6] 804.82/217.38 = [colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)] 804.82/217.38 804.82/217.38 [graphcolour^#(Cons(x, xs), cs)] = [4] xs + [7] cs + [9] 804.82/217.38 > [4] 804.82/217.38 = [colornode^#(cs, x, Nil())] 804.82/217.38 804.82/217.38 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.38 >= [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.38 = [colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest)] 804.82/217.38 804.82/217.38 [colorrestthetrick[Ite]^#(True(), = [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.38 cs1, 804.82/217.38 cs, 804.82/217.38 ncs, 804.82/217.38 colorednodes, 804.82/217.38 rest)] 804.82/217.39 >= [2] rest + [4] colorednodes + [7] cs + [2] 804.82/217.39 = [colorrest^#(cs, cs1, colorednodes, rest)] 804.82/217.39 804.82/217.39 [colorrestthetrick[Ite]^#(False(), = [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.39 Cons(x, xs), 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest)] 804.82/217.39 >= [7] rest + [7] colorednodes + [7] cs + [7] ncs + [2] 804.82/217.39 = [colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)] 804.82/217.39 804.82/217.39 [colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs))] = [4] xs + [4] 804.82/217.39 >= [4] xs + [4] 804.82/217.39 = [c_13(colorof^#(node, xs))] 804.82/217.39 804.82/217.39 804.82/217.39 We return to the main proof. Consider the set of all dependency 804.82/217.39 pairs 804.82/217.39 804.82/217.39 : 804.82/217.39 { 1: colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.39 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.39 node, 804.82/217.39 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.39 , 2: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.39 colornode^#(ncs, x, colorednodes) 804.82/217.39 , 3: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 possible^#(x, ns, colorednodes) 804.82/217.39 , 4: colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes) 804.82/217.39 , 5: possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.39 colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 , 6: possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 colorof^#(x, colorednodes) 804.82/217.39 , 7: possible[Ite][True][Ite]^#(False(), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 -> possible^#(color, xs, colorednodes) 804.82/217.39 , 8: colornode[Ite][True][Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 node, 804.82/217.39 colorednodes) 804.82/217.39 -> colornode^#(xs, node, colorednodes) 804.82/217.39 , 9: graphcolour^#(Cons(x, xs), cs) -> 804.82/217.39 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.39 , 10: graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.39 , 11: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.39 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 , 12: colorrestthetrick[Ite]^#(True(), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.39 , 13: colorrestthetrick[Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.39 , 14: colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.39 c_13(colorof^#(node, xs)) } 804.82/217.39 804.82/217.39 Processor 'matrix interpretation of dimension 1' induces the 804.82/217.39 complexity certificate YES(?,O(n^1)) on application of dependency 804.82/217.39 pairs {1,9,10}. These cover all (indirect) predecessors of 804.82/217.39 dependency pairs {1,9,10,14}, their number of application is 804.82/217.39 equally bounded. The dependency pairs are shifted into the weak 804.82/217.39 component. 804.82/217.39 804.82/217.39 We are left with following problem, upon which TcT provides the 804.82/217.39 certificate YES(O(1),O(1)). 804.82/217.39 804.82/217.39 Weak DPs: 804.82/217.39 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.39 colornode^#(ncs, x, colorednodes) 804.82/217.39 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 possible^#(x, ns, colorednodes) 804.82/217.39 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes) 804.82/217.39 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.39 colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 colorof^#(x, colorednodes) 804.82/217.39 , possible[Ite][True][Ite]^#(False(), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 -> possible^#(color, xs, colorednodes) 804.82/217.39 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.39 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.39 node, 804.82/217.39 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.39 , colornode[Ite][True][Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 node, 804.82/217.39 colorednodes) 804.82/217.39 -> colornode^#(xs, node, colorednodes) 804.82/217.39 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.39 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.39 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.39 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.39 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 , colorrestthetrick[Ite]^#(True(), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.39 , colorrestthetrick[Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.39 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.39 c_13(colorof^#(node, xs)) } 804.82/217.39 Weak Trs: 804.82/217.39 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.39 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 , possible(color, Nil(), colorednodes) -> True() 804.82/217.39 , eqColor(NoColor(), b) -> False() 804.82/217.39 , eqColor(Blue(), NoColor()) -> False() 804.82/217.39 , eqColor(Blue(), Blue()) -> True() 804.82/217.39 , eqColor(Blue(), Red()) -> False() 804.82/217.39 , eqColor(Blue(), Yellow()) -> False() 804.82/217.39 , eqColor(Red(), NoColor()) -> False() 804.82/217.39 , eqColor(Red(), Blue()) -> False() 804.82/217.39 , eqColor(Red(), Red()) -> True() 804.82/217.39 , eqColor(Red(), Yellow()) -> False() 804.82/217.39 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.39 , eqColor(Yellow(), Blue()) -> False() 804.82/217.39 , eqColor(Yellow(), Red()) -> False() 804.82/217.39 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.39 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.39 CN(cs, node) 804.82/217.39 , colornode[Ite][True][Ite](False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 node, 804.82/217.39 colorednodes) 804.82/217.39 -> colornode(xs, node, colorednodes) 804.82/217.39 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.39 , !EQ(S(x), 0()) -> False() 804.82/217.39 , !EQ(0(), S(y)) -> False() 804.82/217.39 , !EQ(0(), 0()) -> True() 804.82/217.39 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes) 804.82/217.39 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.39 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.39 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.39 , eqColorList(Nil(), Nil()) -> True() 804.82/217.39 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.39 False() 804.82/217.39 , possible[Ite][True][Ite](False(), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 -> possible(color, xs, colorednodes) 804.82/217.39 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.39 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.39 node, 804.82/217.39 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.39 , colorof(node, Nil()) -> NoColor() 804.82/217.39 , colorof[Ite][True][Ite](True(), 804.82/217.39 node, 804.82/217.39 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.39 -> x 804.82/217.39 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.39 colorof(node, xs) 804.82/217.39 , and(True(), True()) -> True() 804.82/217.39 , and(True(), False()) -> False() 804.82/217.39 , and(False(), True()) -> False() 804.82/217.39 , and(False(), False()) -> False() } 804.82/217.39 Obligation: 804.82/217.39 innermost runtime complexity 804.82/217.39 Answer: 804.82/217.39 YES(O(1),O(1)) 804.82/217.39 804.82/217.39 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.39 closed under successors. The DPs are removed. 804.82/217.39 804.82/217.39 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.39 colornode^#(ncs, x, colorednodes) 804.82/217.39 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 possible^#(x, ns, colorednodes) 804.82/217.39 , colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes) 804.82/217.39 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.39 colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 colorof^#(x, colorednodes) 804.82/217.39 , possible[Ite][True][Ite]^#(False(), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 -> possible^#(color, xs, colorednodes) 804.82/217.39 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.39 c_4(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.39 node, 804.82/217.39 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.39 , colornode[Ite][True][Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 node, 804.82/217.39 colorednodes) 804.82/217.39 -> colornode^#(xs, node, colorednodes) 804.82/217.39 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.39 colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs) 804.82/217.39 , graphcolour^#(Cons(x, xs), cs) -> colornode^#(cs, x, Nil()) 804.82/217.39 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.39 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 , colorrestthetrick[Ite]^#(True(), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrest^#(cs, cs1, colorednodes, rest) 804.82/217.39 , colorrestthetrick[Ite]^#(False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest) 804.82/217.39 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) 804.82/217.39 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.39 c_13(colorof^#(node, xs)) } 804.82/217.39 804.82/217.39 We are left with following problem, upon which TcT provides the 804.82/217.39 certificate YES(O(1),O(1)). 804.82/217.39 804.82/217.39 Weak Trs: 804.82/217.39 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.39 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 , possible(color, Nil(), colorednodes) -> True() 804.82/217.39 , eqColor(NoColor(), b) -> False() 804.82/217.39 , eqColor(Blue(), NoColor()) -> False() 804.82/217.39 , eqColor(Blue(), Blue()) -> True() 804.82/217.39 , eqColor(Blue(), Red()) -> False() 804.82/217.39 , eqColor(Blue(), Yellow()) -> False() 804.82/217.39 , eqColor(Red(), NoColor()) -> False() 804.82/217.39 , eqColor(Red(), Blue()) -> False() 804.82/217.39 , eqColor(Red(), Red()) -> True() 804.82/217.39 , eqColor(Red(), Yellow()) -> False() 804.82/217.39 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.39 , eqColor(Yellow(), Blue()) -> False() 804.82/217.39 , eqColor(Yellow(), Red()) -> False() 804.82/217.39 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.39 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.39 CN(cs, node) 804.82/217.39 , colornode[Ite][True][Ite](False(), 804.82/217.39 Cons(x, xs), 804.82/217.39 node, 804.82/217.39 colorednodes) 804.82/217.39 -> colornode(xs, node, colorednodes) 804.82/217.39 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.39 , !EQ(S(x), 0()) -> False() 804.82/217.39 , !EQ(0(), S(y)) -> False() 804.82/217.39 , !EQ(0(), 0()) -> True() 804.82/217.39 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes) 804.82/217.39 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.39 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.39 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 and(False(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 and(True(), eqColorList(cs1, cs2)) 804.82/217.39 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.39 , eqColorList(Nil(), Nil()) -> True() 804.82/217.39 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.39 False() 804.82/217.39 , possible[Ite][True][Ite](False(), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes) 804.82/217.39 -> possible(color, xs, colorednodes) 804.82/217.39 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.39 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.39 node, 804.82/217.39 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.39 , colorof(node, Nil()) -> NoColor() 804.82/217.39 , colorof[Ite][True][Ite](True(), 804.82/217.39 node, 804.82/217.39 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.39 -> x 804.82/217.39 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.39 colorof(node, xs) 804.82/217.39 , and(True(), True()) -> True() 804.82/217.39 , and(True(), False()) -> False() 804.82/217.39 , and(False(), True()) -> False() 804.82/217.39 , and(False(), False()) -> False() } 804.82/217.39 Obligation: 804.82/217.39 innermost runtime complexity 804.82/217.39 Answer: 804.82/217.39 YES(O(1),O(1)) 804.82/217.39 804.82/217.39 No rule is usable, rules are removed from the input problem. 804.82/217.39 804.82/217.39 We are left with following problem, upon which TcT provides the 804.82/217.39 certificate YES(O(1),O(1)). 804.82/217.39 804.82/217.39 Rules: Empty 804.82/217.39 Obligation: 804.82/217.39 innermost runtime complexity 804.82/217.39 Answer: 804.82/217.39 YES(O(1),O(1)) 804.82/217.39 804.82/217.39 Empty rules are trivially bounded 804.82/217.39 804.82/217.39 S) We are left with following problem, upon which TcT provides the 804.82/217.39 certificate YES(O(1),POLY). 804.82/217.39 804.82/217.39 Strict DPs: 804.82/217.39 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 804.82/217.39 c_1(colornode^#(ncs, x, colorednodes)) 804.82/217.39 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 804.82/217.39 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.39 c_9(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 c_10(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 c_11(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 c_12(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 c_13(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 c_14(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 c_15(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 c_16(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 c_17(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.39 c_18(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.39 c_19(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.39 c_20(eqColorList^#(cs1, cs2)) 804.82/217.39 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.39 c_21(eqColorList^#(cs1, cs2)) 804.82/217.39 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 804.82/217.39 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 804.82/217.39 cs1, 804.82/217.39 cs, 804.82/217.39 ncs, 804.82/217.39 colorednodes, 804.82/217.39 rest), 804.82/217.39 eqColorList^#(cs1, ncs)) } 804.82/217.39 Weak DPs: 804.82/217.39 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.39 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.39 Cons(x, xs), 804.82/217.39 N(n, ns), 804.82/217.39 colorednodes), 804.82/217.39 possible^#(x, ns, colorednodes)) 804.82/217.39 , possible^#(color, Cons(x, xs), colorednodes) -> 804.82/217.39 c_5(possible[Ite][True][Ite]^#(eqColor(color, 804.82/217.39 colorof(x, colorednodes)), 804.82/217.39 color, 804.82/217.39 Cons(x, xs), 804.82/217.39 colorednodes), 804.82/217.40 colorof^#(x, colorednodes)) 804.82/217.40 , possible^#(color, Nil(), colorednodes) -> c_6() 804.82/217.40 , possible[Ite][True][Ite]^#(False(), 804.82/217.40 color, 804.82/217.40 Cons(x, xs), 804.82/217.40 colorednodes) 804.82/217.40 -> c_23(possible^#(color, xs, colorednodes)) 804.82/217.40 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.40 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 804.82/217.40 node, 804.82/217.40 Cons(CN(cl, N(name, adjs)), xs))) 804.82/217.40 , colorof^#(node, Nil()) -> c_8() 804.82/217.40 , colornode[Ite][True][Ite]^#(False(), 804.82/217.40 Cons(x, xs), 804.82/217.40 node, 804.82/217.40 colorednodes) 804.82/217.40 -> c_24(colornode^#(xs, node, colorednodes)) 804.82/217.40 , graphcolour^#(Cons(x, xs), cs) -> 804.82/217.40 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 804.82/217.40 colornode^#(cs, x, Nil())) 804.82/217.40 , colorrestthetrick[Ite]^#(True(), 804.82/217.40 cs1, 804.82/217.40 cs, 804.82/217.40 ncs, 804.82/217.40 colorednodes, 804.82/217.40 rest) 804.82/217.40 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 804.82/217.40 , colorrestthetrick[Ite]^#(False(), 804.82/217.40 Cons(x, xs), 804.82/217.40 cs, 804.82/217.40 ncs, 804.82/217.40 colorednodes, 804.82/217.40 rest) 804.82/217.40 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 804.82/217.40 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 804.82/217.40 c_28(colorof^#(node, xs)) } 804.82/217.40 Weak Trs: 804.82/217.40 { possible(color, Cons(x, xs), colorednodes) -> 804.82/217.40 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 804.82/217.40 color, 804.82/217.40 Cons(x, xs), 804.82/217.40 colorednodes) 804.82/217.40 , possible(color, Nil(), colorednodes) -> True() 804.82/217.40 , eqColor(NoColor(), b) -> False() 804.82/217.40 , eqColor(Blue(), NoColor()) -> False() 804.82/217.40 , eqColor(Blue(), Blue()) -> True() 804.82/217.40 , eqColor(Blue(), Red()) -> False() 804.82/217.40 , eqColor(Blue(), Yellow()) -> False() 804.82/217.40 , eqColor(Red(), NoColor()) -> False() 804.82/217.40 , eqColor(Red(), Blue()) -> False() 804.82/217.40 , eqColor(Red(), Red()) -> True() 804.82/217.40 , eqColor(Red(), Yellow()) -> False() 804.82/217.40 , eqColor(Yellow(), NoColor()) -> False() 804.82/217.40 , eqColor(Yellow(), Blue()) -> False() 804.82/217.40 , eqColor(Yellow(), Red()) -> False() 804.82/217.40 , eqColor(Yellow(), Yellow()) -> True() 804.82/217.40 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 804.82/217.40 CN(cs, node) 804.82/217.40 , colornode[Ite][True][Ite](False(), 804.82/217.40 Cons(x, xs), 804.82/217.40 node, 804.82/217.40 colorednodes) 804.82/217.40 -> colornode(xs, node, colorednodes) 804.82/217.40 , !EQ(S(x), S(y)) -> !EQ(x, y) 804.82/217.40 , !EQ(S(x), 0()) -> False() 804.82/217.40 , !EQ(0(), S(y)) -> False() 804.82/217.40 , !EQ(0(), 0()) -> True() 804.82/217.40 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.40 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 804.82/217.40 Cons(x, xs), 804.82/217.40 N(n, ns), 804.82/217.40 colorednodes) 804.82/217.40 , colornode(Nil(), node, colorednodes) -> NotPossible() 804.82/217.40 , eqColorList(Cons(c1, cs1), Nil()) -> False() 804.82/217.40 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 804.82/217.40 and(True(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 804.82/217.40 and(True(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 804.82/217.40 and(False(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 804.82/217.40 and(True(), eqColorList(cs1, cs2)) 804.82/217.40 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 804.82/217.40 , eqColorList(Nil(), Nil()) -> True() 804.82/217.40 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 804.82/217.40 False() 804.82/217.40 , possible[Ite][True][Ite](False(), 804.82/217.40 color, 804.82/217.40 Cons(x, xs), 804.82/217.40 colorednodes) 804.82/217.40 -> possible(color, xs, colorednodes) 804.82/217.40 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 804.82/217.40 colorof[Ite][True][Ite](!EQ(name, node), 804.82/217.40 node, 804.82/217.40 Cons(CN(cl, N(name, adjs)), xs)) 804.82/217.40 , colorof(node, Nil()) -> NoColor() 804.82/217.40 , colorof[Ite][True][Ite](True(), 804.82/217.40 node, 804.82/217.40 Cons(CN(Cons(x, xs), n), xs')) 804.82/217.40 -> x 804.82/217.40 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 804.82/217.40 colorof(node, xs) 804.82/217.40 , and(True(), True()) -> True() 804.82/217.40 , and(True(), False()) -> False() 804.82/217.40 , and(False(), True()) -> False() 804.82/217.40 , and(False(), False()) -> False() } 804.82/217.40 Obligation: 804.82/217.40 innermost runtime complexity 804.82/217.40 Answer: 804.82/217.40 YES(O(1),POLY) 804.82/217.40 804.82/217.40 The following weak DPs constitute a sub-graph of the DG that is 804.82/217.40 closed under successors. The DPs are removed. 804.82/217.40 804.82/217.40 { colornode^#(Cons(x, xs), N(n, ns), colorednodes) -> 804.82/217.40 c_3(colornode[Ite][True][Ite]^#(possible(x, ns, colorednodes), 804.82/217.40 Cons(x, xs), 804.82/217.40 N(n, ns), 804.82/217.40 colorednodes), 805.04/217.40 possible^#(x, ns, colorednodes)) 805.04/217.40 , possible^#(color, Cons(x, xs), colorednodes) -> 805.04/217.40 c_5(possible[Ite][True][Ite]^#(eqColor(color, 805.04/217.40 colorof(x, colorednodes)), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes), 805.04/217.40 colorof^#(x, colorednodes)) 805.04/217.40 , possible^#(color, Nil(), colorednodes) -> c_6() 805.04/217.40 , possible[Ite][True][Ite]^#(False(), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes) 805.04/217.40 -> c_23(possible^#(color, xs, colorednodes)) 805.04/217.40 , colorof^#(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.40 c_7(colorof[Ite][True][Ite]^#(!EQ(name, node), 805.04/217.40 node, 805.04/217.40 Cons(CN(cl, N(name, adjs)), xs))) 805.04/217.40 , colorof^#(node, Nil()) -> c_8() 805.04/217.40 , colornode[Ite][True][Ite]^#(False(), 805.04/217.40 Cons(x, xs), 805.04/217.40 node, 805.04/217.40 colorednodes) 805.04/217.40 -> c_24(colornode^#(xs, node, colorednodes)) 805.04/217.40 , colorof[Ite][True][Ite]^#(False(), node, Cons(x, xs)) -> 805.04/217.40 c_28(colorof^#(node, xs)) } 805.04/217.40 805.04/217.40 We are left with following problem, upon which TcT provides the 805.04/217.40 certificate YES(O(1),POLY). 805.04/217.40 805.04/217.40 Strict DPs: 805.04/217.40 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 805.04/217.40 c_1(colornode^#(ncs, x, colorednodes)) 805.04/217.40 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 805.04/217.40 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.40 c_9(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_10(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_11(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_12(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_13(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_14(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_15(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_16(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_17(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_18(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_19(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_20(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_21(eqColorList^#(cs1, cs2)) 805.04/217.40 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.40 c_22(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.40 cs1, 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest), 805.04/217.40 eqColorList^#(cs1, ncs)) } 805.04/217.40 Weak DPs: 805.04/217.40 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.40 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 805.04/217.40 colornode^#(cs, x, Nil())) 805.04/217.40 , colorrestthetrick[Ite]^#(True(), 805.04/217.40 cs1, 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest) 805.04/217.40 -> c_26(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.40 , colorrestthetrick[Ite]^#(False(), 805.04/217.40 Cons(x, xs), 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest) 805.04/217.40 -> c_27(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.40 Weak Trs: 805.04/217.40 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.40 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes) 805.04/217.40 , possible(color, Nil(), colorednodes) -> True() 805.04/217.40 , eqColor(NoColor(), b) -> False() 805.04/217.40 , eqColor(Blue(), NoColor()) -> False() 805.04/217.40 , eqColor(Blue(), Blue()) -> True() 805.04/217.40 , eqColor(Blue(), Red()) -> False() 805.04/217.40 , eqColor(Blue(), Yellow()) -> False() 805.04/217.40 , eqColor(Red(), NoColor()) -> False() 805.04/217.40 , eqColor(Red(), Blue()) -> False() 805.04/217.40 , eqColor(Red(), Red()) -> True() 805.04/217.40 , eqColor(Red(), Yellow()) -> False() 805.04/217.40 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.40 , eqColor(Yellow(), Blue()) -> False() 805.04/217.40 , eqColor(Yellow(), Red()) -> False() 805.04/217.40 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.40 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.40 CN(cs, node) 805.04/217.40 , colornode[Ite][True][Ite](False(), 805.04/217.40 Cons(x, xs), 805.04/217.40 node, 805.04/217.40 colorednodes) 805.04/217.40 -> colornode(xs, node, colorednodes) 805.04/217.40 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.40 , !EQ(S(x), 0()) -> False() 805.04/217.40 , !EQ(0(), S(y)) -> False() 805.04/217.40 , !EQ(0(), 0()) -> True() 805.04/217.40 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.40 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.40 Cons(x, xs), 805.04/217.40 N(n, ns), 805.04/217.40 colorednodes) 805.04/217.40 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.40 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.40 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.40 , eqColorList(Nil(), Nil()) -> True() 805.04/217.40 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.40 False() 805.04/217.40 , possible[Ite][True][Ite](False(), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes) 805.04/217.40 -> possible(color, xs, colorednodes) 805.04/217.40 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.40 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.40 node, 805.04/217.40 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.40 , colorof(node, Nil()) -> NoColor() 805.04/217.40 , colorof[Ite][True][Ite](True(), 805.04/217.40 node, 805.04/217.40 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.40 -> x 805.04/217.40 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.40 colorof(node, xs) 805.04/217.40 , and(True(), True()) -> True() 805.04/217.40 , and(True(), False()) -> False() 805.04/217.40 , and(False(), True()) -> False() 805.04/217.40 , and(False(), False()) -> False() } 805.04/217.40 Obligation: 805.04/217.40 innermost runtime complexity 805.04/217.40 Answer: 805.04/217.40 YES(O(1),POLY) 805.04/217.40 805.04/217.40 Due to missing edges in the dependency-graph, the right-hand sides 805.04/217.40 of following rules could be simplified: 805.04/217.40 805.04/217.40 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> 805.04/217.40 c_1(colornode^#(ncs, x, colorednodes)) 805.04/217.40 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.40 c_25(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs), 805.04/217.40 colornode^#(cs, x, Nil())) } 805.04/217.40 805.04/217.40 We are left with following problem, upon which TcT provides the 805.04/217.40 certificate YES(O(1),POLY). 805.04/217.40 805.04/217.40 Strict DPs: 805.04/217.40 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.40 , colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 805.04/217.40 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.40 c_3(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_4(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_5(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_6(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_7(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_8(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_9(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_10(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_11(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 c_12(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 c_13(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 c_14(eqColorList^#(cs1, cs2)) 805.04/217.40 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 c_15(eqColorList^#(cs1, cs2)) 805.04/217.40 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.40 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.40 cs1, 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest), 805.04/217.40 eqColorList^#(cs1, ncs)) } 805.04/217.40 Weak DPs: 805.04/217.40 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.40 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.40 , colorrestthetrick[Ite]^#(True(), 805.04/217.40 cs1, 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest) 805.04/217.40 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.40 , colorrestthetrick[Ite]^#(False(), 805.04/217.40 Cons(x, xs), 805.04/217.40 cs, 805.04/217.40 ncs, 805.04/217.40 colorednodes, 805.04/217.40 rest) 805.04/217.40 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.40 Weak Trs: 805.04/217.40 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.40 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes) 805.04/217.40 , possible(color, Nil(), colorednodes) -> True() 805.04/217.40 , eqColor(NoColor(), b) -> False() 805.04/217.40 , eqColor(Blue(), NoColor()) -> False() 805.04/217.40 , eqColor(Blue(), Blue()) -> True() 805.04/217.40 , eqColor(Blue(), Red()) -> False() 805.04/217.40 , eqColor(Blue(), Yellow()) -> False() 805.04/217.40 , eqColor(Red(), NoColor()) -> False() 805.04/217.40 , eqColor(Red(), Blue()) -> False() 805.04/217.40 , eqColor(Red(), Red()) -> True() 805.04/217.40 , eqColor(Red(), Yellow()) -> False() 805.04/217.40 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.40 , eqColor(Yellow(), Blue()) -> False() 805.04/217.40 , eqColor(Yellow(), Red()) -> False() 805.04/217.40 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.40 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.40 CN(cs, node) 805.04/217.40 , colornode[Ite][True][Ite](False(), 805.04/217.40 Cons(x, xs), 805.04/217.40 node, 805.04/217.40 colorednodes) 805.04/217.40 -> colornode(xs, node, colorednodes) 805.04/217.40 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.40 , !EQ(S(x), 0()) -> False() 805.04/217.40 , !EQ(0(), S(y)) -> False() 805.04/217.40 , !EQ(0(), 0()) -> True() 805.04/217.40 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.40 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.40 Cons(x, xs), 805.04/217.40 N(n, ns), 805.04/217.40 colorednodes) 805.04/217.40 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.40 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.40 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.40 and(False(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.40 and(True(), eqColorList(cs1, cs2)) 805.04/217.40 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.40 , eqColorList(Nil(), Nil()) -> True() 805.04/217.40 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.40 False() 805.04/217.40 , possible[Ite][True][Ite](False(), 805.04/217.40 color, 805.04/217.40 Cons(x, xs), 805.04/217.40 colorednodes) 805.04/217.40 -> possible(color, xs, colorednodes) 805.04/217.40 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.40 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.40 node, 805.04/217.40 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.40 , colorof(node, Nil()) -> NoColor() 805.04/217.40 , colorof[Ite][True][Ite](True(), 805.04/217.40 node, 805.04/217.40 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.40 -> x 805.04/217.40 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.40 colorof(node, xs) 805.04/217.40 , and(True(), True()) -> True() 805.04/217.40 , and(True(), False()) -> False() 805.04/217.40 , and(False(), True()) -> False() 805.04/217.41 , and(False(), False()) -> False() } 805.04/217.41 Obligation: 805.04/217.41 innermost runtime complexity 805.04/217.41 Answer: 805.04/217.41 YES(O(1),POLY) 805.04/217.41 805.04/217.41 We analyse the complexity of following sub-problems (R) and (S). 805.04/217.41 Problem (S) is obtained from the input problem by shifting strict 805.04/217.41 rules from (R) into the weak component: 805.04/217.41 805.04/217.41 Problem (R): 805.04/217.41 ------------ 805.04/217.41 Strict DPs: { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() } 805.04/217.41 Weak DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.41 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 c_3(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_4(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_5(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_6(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_7(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_8(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_9(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_10(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_11(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_12(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_13(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_14(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_15(eqColorList^#(cs1, cs2)) 805.04/217.41 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.41 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.41 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.41 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest), 805.04/217.41 eqColorList^#(cs1, ncs)) 805.04/217.41 , colorrestthetrick[Ite]^#(True(), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.41 , colorrestthetrick[Ite]^#(False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.41 Weak Trs: 805.04/217.41 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.41 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 , possible(color, Nil(), colorednodes) -> True() 805.04/217.41 , eqColor(NoColor(), b) -> False() 805.04/217.41 , eqColor(Blue(), NoColor()) -> False() 805.04/217.41 , eqColor(Blue(), Blue()) -> True() 805.04/217.41 , eqColor(Blue(), Red()) -> False() 805.04/217.41 , eqColor(Blue(), Yellow()) -> False() 805.04/217.41 , eqColor(Red(), NoColor()) -> False() 805.04/217.41 , eqColor(Red(), Blue()) -> False() 805.04/217.41 , eqColor(Red(), Red()) -> True() 805.04/217.41 , eqColor(Red(), Yellow()) -> False() 805.04/217.41 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.41 , eqColor(Yellow(), Blue()) -> False() 805.04/217.41 , eqColor(Yellow(), Red()) -> False() 805.04/217.41 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.41 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.41 CN(cs, node) 805.04/217.41 , colornode[Ite][True][Ite](False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 node, 805.04/217.41 colorednodes) 805.04/217.41 -> colornode(xs, node, colorednodes) 805.04/217.41 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.41 , !EQ(S(x), 0()) -> False() 805.04/217.41 , !EQ(0(), S(y)) -> False() 805.04/217.41 , !EQ(0(), 0()) -> True() 805.04/217.41 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.41 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.41 Cons(x, xs), 805.04/217.41 N(n, ns), 805.04/217.41 colorednodes) 805.04/217.41 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.41 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.41 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.41 , eqColorList(Nil(), Nil()) -> True() 805.04/217.41 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.41 False() 805.04/217.41 , possible[Ite][True][Ite](False(), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 -> possible(color, xs, colorednodes) 805.04/217.41 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.41 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.41 node, 805.04/217.41 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.41 , colorof(node, Nil()) -> NoColor() 805.04/217.41 , colorof[Ite][True][Ite](True(), 805.04/217.41 node, 805.04/217.41 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.41 -> x 805.04/217.41 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.41 colorof(node, xs) 805.04/217.41 , and(True(), True()) -> True() 805.04/217.41 , and(True(), False()) -> False() 805.04/217.41 , and(False(), True()) -> False() 805.04/217.41 , and(False(), False()) -> False() } 805.04/217.41 StartTerms: basic terms 805.04/217.41 Strategy: innermost 805.04/217.41 805.04/217.41 Problem (S): 805.04/217.41 ------------ 805.04/217.41 Strict DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.41 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 c_3(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_4(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_5(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_6(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_7(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_8(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_9(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_10(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_11(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_12(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_13(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_14(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_15(eqColorList^#(cs1, cs2)) 805.04/217.41 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.41 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest), 805.04/217.41 eqColorList^#(cs1, ncs)) } 805.04/217.41 Weak DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 805.04/217.41 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.41 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.41 , colorrestthetrick[Ite]^#(True(), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.41 , colorrestthetrick[Ite]^#(False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.41 Weak Trs: 805.04/217.41 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.41 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 , possible(color, Nil(), colorednodes) -> True() 805.04/217.41 , eqColor(NoColor(), b) -> False() 805.04/217.41 , eqColor(Blue(), NoColor()) -> False() 805.04/217.41 , eqColor(Blue(), Blue()) -> True() 805.04/217.41 , eqColor(Blue(), Red()) -> False() 805.04/217.41 , eqColor(Blue(), Yellow()) -> False() 805.04/217.41 , eqColor(Red(), NoColor()) -> False() 805.04/217.41 , eqColor(Red(), Blue()) -> False() 805.04/217.41 , eqColor(Red(), Red()) -> True() 805.04/217.41 , eqColor(Red(), Yellow()) -> False() 805.04/217.41 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.41 , eqColor(Yellow(), Blue()) -> False() 805.04/217.41 , eqColor(Yellow(), Red()) -> False() 805.04/217.41 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.41 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.41 CN(cs, node) 805.04/217.41 , colornode[Ite][True][Ite](False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 node, 805.04/217.41 colorednodes) 805.04/217.41 -> colornode(xs, node, colorednodes) 805.04/217.41 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.41 , !EQ(S(x), 0()) -> False() 805.04/217.41 , !EQ(0(), S(y)) -> False() 805.04/217.41 , !EQ(0(), 0()) -> True() 805.04/217.41 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.41 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.41 Cons(x, xs), 805.04/217.41 N(n, ns), 805.04/217.41 colorednodes) 805.04/217.41 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.41 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.41 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.41 , eqColorList(Nil(), Nil()) -> True() 805.04/217.41 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.41 False() 805.04/217.41 , possible[Ite][True][Ite](False(), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 -> possible(color, xs, colorednodes) 805.04/217.41 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.41 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.41 node, 805.04/217.41 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.41 , colorof(node, Nil()) -> NoColor() 805.04/217.41 , colorof[Ite][True][Ite](True(), 805.04/217.41 node, 805.04/217.41 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.41 -> x 805.04/217.41 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.41 colorof(node, xs) 805.04/217.41 , and(True(), True()) -> True() 805.04/217.41 , and(True(), False()) -> False() 805.04/217.41 , and(False(), True()) -> False() 805.04/217.41 , and(False(), False()) -> False() } 805.04/217.41 StartTerms: basic terms 805.04/217.41 Strategy: innermost 805.04/217.41 805.04/217.41 Overall, the transformation results in the following sub-problem(s): 805.04/217.41 805.04/217.41 Generated new problems: 805.04/217.41 ----------------------- 805.04/217.41 R) Strict DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() } 805.04/217.41 Weak DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.41 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 c_3(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_4(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_5(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_6(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_7(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_8(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_9(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_10(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_11(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_12(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_13(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_14(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_15(eqColorList^#(cs1, cs2)) 805.04/217.41 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.41 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.41 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.41 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest), 805.04/217.41 eqColorList^#(cs1, ncs)) 805.04/217.41 , colorrestthetrick[Ite]^#(True(), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.41 , colorrestthetrick[Ite]^#(False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.41 Weak Trs: 805.04/217.41 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.41 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 , possible(color, Nil(), colorednodes) -> True() 805.04/217.41 , eqColor(NoColor(), b) -> False() 805.04/217.41 , eqColor(Blue(), NoColor()) -> False() 805.04/217.41 , eqColor(Blue(), Blue()) -> True() 805.04/217.41 , eqColor(Blue(), Red()) -> False() 805.04/217.41 , eqColor(Blue(), Yellow()) -> False() 805.04/217.41 , eqColor(Red(), NoColor()) -> False() 805.04/217.41 , eqColor(Red(), Blue()) -> False() 805.04/217.41 , eqColor(Red(), Red()) -> True() 805.04/217.41 , eqColor(Red(), Yellow()) -> False() 805.04/217.41 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.41 , eqColor(Yellow(), Blue()) -> False() 805.04/217.41 , eqColor(Yellow(), Red()) -> False() 805.04/217.41 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.41 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.41 CN(cs, node) 805.04/217.41 , colornode[Ite][True][Ite](False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 node, 805.04/217.41 colorednodes) 805.04/217.41 -> colornode(xs, node, colorednodes) 805.04/217.41 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.41 , !EQ(S(x), 0()) -> False() 805.04/217.41 , !EQ(0(), S(y)) -> False() 805.04/217.41 , !EQ(0(), 0()) -> True() 805.04/217.41 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.41 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.41 Cons(x, xs), 805.04/217.41 N(n, ns), 805.04/217.41 colorednodes) 805.04/217.41 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.41 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.41 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.41 , eqColorList(Nil(), Nil()) -> True() 805.04/217.41 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.41 False() 805.04/217.41 , possible[Ite][True][Ite](False(), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 -> possible(color, xs, colorednodes) 805.04/217.41 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.41 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.41 node, 805.04/217.41 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.41 , colorof(node, Nil()) -> NoColor() 805.04/217.41 , colorof[Ite][True][Ite](True(), 805.04/217.41 node, 805.04/217.41 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.41 -> x 805.04/217.41 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.41 colorof(node, xs) 805.04/217.41 , and(True(), True()) -> True() 805.04/217.41 , and(True(), False()) -> False() 805.04/217.41 , and(False(), True()) -> False() 805.04/217.41 , and(False(), False()) -> False() } 805.04/217.41 StartTerms: basic terms 805.04/217.41 Strategy: innermost 805.04/217.41 805.04/217.41 This problem was proven YES(O(1),O(1)). 805.04/217.41 805.04/217.41 S) Strict DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.41 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 c_3(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_4(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_5(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_6(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_7(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_8(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_9(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_10(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_11(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 c_12(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 c_13(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 c_14(eqColorList^#(cs1, cs2)) 805.04/217.41 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 c_15(eqColorList^#(cs1, cs2)) 805.04/217.41 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.41 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest), 805.04/217.41 eqColorList^#(cs1, ncs)) } 805.04/217.41 Weak DPs: 805.04/217.41 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 805.04/217.41 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.41 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.41 , colorrestthetrick[Ite]^#(True(), 805.04/217.41 cs1, 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.41 , colorrestthetrick[Ite]^#(False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 cs, 805.04/217.41 ncs, 805.04/217.41 colorednodes, 805.04/217.41 rest) 805.04/217.41 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.41 Weak Trs: 805.04/217.41 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.41 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.41 , possible(color, Nil(), colorednodes) -> True() 805.04/217.41 , eqColor(NoColor(), b) -> False() 805.04/217.41 , eqColor(Blue(), NoColor()) -> False() 805.04/217.41 , eqColor(Blue(), Blue()) -> True() 805.04/217.41 , eqColor(Blue(), Red()) -> False() 805.04/217.41 , eqColor(Blue(), Yellow()) -> False() 805.04/217.41 , eqColor(Red(), NoColor()) -> False() 805.04/217.41 , eqColor(Red(), Blue()) -> False() 805.04/217.41 , eqColor(Red(), Red()) -> True() 805.04/217.41 , eqColor(Red(), Yellow()) -> False() 805.04/217.41 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.41 , eqColor(Yellow(), Blue()) -> False() 805.04/217.41 , eqColor(Yellow(), Red()) -> False() 805.04/217.41 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.41 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.41 CN(cs, node) 805.04/217.41 , colornode[Ite][True][Ite](False(), 805.04/217.41 Cons(x, xs), 805.04/217.41 node, 805.04/217.41 colorednodes) 805.04/217.41 -> colornode(xs, node, colorednodes) 805.04/217.41 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.41 , !EQ(S(x), 0()) -> False() 805.04/217.41 , !EQ(0(), S(y)) -> False() 805.04/217.41 , !EQ(0(), 0()) -> True() 805.04/217.41 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.41 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.41 Cons(x, xs), 805.04/217.41 N(n, ns), 805.04/217.41 colorednodes) 805.04/217.41 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.41 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.41 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.41 and(False(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.41 and(True(), eqColorList(cs1, cs2)) 805.04/217.41 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.41 , eqColorList(Nil(), Nil()) -> True() 805.04/217.41 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.41 False() 805.04/217.41 , possible[Ite][True][Ite](False(), 805.04/217.41 color, 805.04/217.41 Cons(x, xs), 805.04/217.41 colorednodes) 805.04/217.42 -> possible(color, xs, colorednodes) 805.04/217.42 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.42 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.42 node, 805.04/217.42 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.42 , colorof(node, Nil()) -> NoColor() 805.04/217.42 , colorof[Ite][True][Ite](True(), 805.04/217.42 node, 805.04/217.42 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.42 -> x 805.04/217.42 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.42 colorof(node, xs) 805.04/217.42 , and(True(), True()) -> True() 805.04/217.42 , and(True(), False()) -> False() 805.04/217.42 , and(False(), True()) -> False() 805.04/217.42 , and(False(), False()) -> False() } 805.04/217.42 StartTerms: basic terms 805.04/217.42 Strategy: innermost 805.04/217.42 805.04/217.42 This problem was proven YES(O(1),POLY). 805.04/217.42 805.04/217.42 805.04/217.42 Proofs for generated problems: 805.04/217.42 ------------------------------ 805.04/217.42 R) We are left with following problem, upon which TcT provides the 805.04/217.42 certificate YES(O(1),O(1)). 805.04/217.42 805.04/217.42 Strict DPs: { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() } 805.04/217.42 Weak DPs: 805.04/217.42 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.42 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.42 c_3(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_4(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_5(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_6(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_7(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_8(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_9(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_10(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_11(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_12(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_13(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_14(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_15(eqColorList^#(cs1, cs2)) 805.04/217.42 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.42 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.42 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.42 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest), 805.04/217.42 eqColorList^#(cs1, ncs)) 805.04/217.42 , colorrestthetrick[Ite]^#(True(), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.42 , colorrestthetrick[Ite]^#(False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.42 Weak Trs: 805.04/217.42 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.42 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 , possible(color, Nil(), colorednodes) -> True() 805.04/217.42 , eqColor(NoColor(), b) -> False() 805.04/217.42 , eqColor(Blue(), NoColor()) -> False() 805.04/217.42 , eqColor(Blue(), Blue()) -> True() 805.04/217.42 , eqColor(Blue(), Red()) -> False() 805.04/217.42 , eqColor(Blue(), Yellow()) -> False() 805.04/217.42 , eqColor(Red(), NoColor()) -> False() 805.04/217.42 , eqColor(Red(), Blue()) -> False() 805.04/217.42 , eqColor(Red(), Red()) -> True() 805.04/217.42 , eqColor(Red(), Yellow()) -> False() 805.04/217.42 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.42 , eqColor(Yellow(), Blue()) -> False() 805.04/217.42 , eqColor(Yellow(), Red()) -> False() 805.04/217.42 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.42 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.42 CN(cs, node) 805.04/217.42 , colornode[Ite][True][Ite](False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 node, 805.04/217.42 colorednodes) 805.04/217.42 -> colornode(xs, node, colorednodes) 805.04/217.42 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.42 , !EQ(S(x), 0()) -> False() 805.04/217.42 , !EQ(0(), S(y)) -> False() 805.04/217.42 , !EQ(0(), 0()) -> True() 805.04/217.42 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.42 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.42 Cons(x, xs), 805.04/217.42 N(n, ns), 805.04/217.42 colorednodes) 805.04/217.42 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.42 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.42 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.42 , eqColorList(Nil(), Nil()) -> True() 805.04/217.42 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.42 False() 805.04/217.42 , possible[Ite][True][Ite](False(), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 -> possible(color, xs, colorednodes) 805.04/217.42 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.42 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.42 node, 805.04/217.42 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.42 , colorof(node, Nil()) -> NoColor() 805.04/217.42 , colorof[Ite][True][Ite](True(), 805.04/217.42 node, 805.04/217.42 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.42 -> x 805.04/217.42 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.42 colorof(node, xs) 805.04/217.42 , and(True(), True()) -> True() 805.04/217.42 , and(True(), False()) -> False() 805.04/217.42 , and(False(), True()) -> False() 805.04/217.42 , and(False(), False()) -> False() } 805.04/217.42 Obligation: 805.04/217.42 innermost runtime complexity 805.04/217.42 Answer: 805.04/217.42 YES(O(1),O(1)) 805.04/217.42 805.04/217.42 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.42 closed under successors. The DPs are removed. 805.04/217.42 805.04/217.42 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.42 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.42 c_3(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_4(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_5(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_6(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_7(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_8(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_9(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_10(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_11(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 c_12(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 c_13(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 c_14(eqColorList^#(cs1, cs2)) 805.04/217.42 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 c_15(eqColorList^#(cs1, cs2)) } 805.04/217.42 805.04/217.42 We are left with following problem, upon which TcT provides the 805.04/217.42 certificate YES(O(1),O(1)). 805.04/217.42 805.04/217.42 Strict DPs: { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() } 805.04/217.42 Weak DPs: 805.04/217.42 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.42 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.42 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.42 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest), 805.04/217.42 eqColorList^#(cs1, ncs)) 805.04/217.42 , colorrestthetrick[Ite]^#(True(), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.42 , colorrestthetrick[Ite]^#(False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.42 Weak Trs: 805.04/217.42 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.42 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 , possible(color, Nil(), colorednodes) -> True() 805.04/217.42 , eqColor(NoColor(), b) -> False() 805.04/217.42 , eqColor(Blue(), NoColor()) -> False() 805.04/217.42 , eqColor(Blue(), Blue()) -> True() 805.04/217.42 , eqColor(Blue(), Red()) -> False() 805.04/217.42 , eqColor(Blue(), Yellow()) -> False() 805.04/217.42 , eqColor(Red(), NoColor()) -> False() 805.04/217.42 , eqColor(Red(), Blue()) -> False() 805.04/217.42 , eqColor(Red(), Red()) -> True() 805.04/217.42 , eqColor(Red(), Yellow()) -> False() 805.04/217.42 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.42 , eqColor(Yellow(), Blue()) -> False() 805.04/217.42 , eqColor(Yellow(), Red()) -> False() 805.04/217.42 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.42 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.42 CN(cs, node) 805.04/217.42 , colornode[Ite][True][Ite](False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 node, 805.04/217.42 colorednodes) 805.04/217.42 -> colornode(xs, node, colorednodes) 805.04/217.42 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.42 , !EQ(S(x), 0()) -> False() 805.04/217.42 , !EQ(0(), S(y)) -> False() 805.04/217.42 , !EQ(0(), 0()) -> True() 805.04/217.42 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.42 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.42 Cons(x, xs), 805.04/217.42 N(n, ns), 805.04/217.42 colorednodes) 805.04/217.42 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.42 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.42 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.42 , eqColorList(Nil(), Nil()) -> True() 805.04/217.42 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.42 False() 805.04/217.42 , possible[Ite][True][Ite](False(), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 -> possible(color, xs, colorednodes) 805.04/217.42 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.42 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.42 node, 805.04/217.42 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.42 , colorof(node, Nil()) -> NoColor() 805.04/217.42 , colorof[Ite][True][Ite](True(), 805.04/217.42 node, 805.04/217.42 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.42 -> x 805.04/217.42 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.42 colorof(node, xs) 805.04/217.42 , and(True(), True()) -> True() 805.04/217.42 , and(True(), False()) -> False() 805.04/217.42 , and(False(), True()) -> False() 805.04/217.42 , and(False(), False()) -> False() } 805.04/217.42 Obligation: 805.04/217.42 innermost runtime complexity 805.04/217.42 Answer: 805.04/217.42 YES(O(1),O(1)) 805.04/217.42 805.04/217.42 Due to missing edges in the dependency-graph, the right-hand sides 805.04/217.42 of following rules could be simplified: 805.04/217.42 805.04/217.42 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.42 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest), 805.04/217.42 eqColorList^#(cs1, ncs)) } 805.04/217.42 805.04/217.42 We are left with following problem, upon which TcT provides the 805.04/217.42 certificate YES(O(1),O(1)). 805.04/217.42 805.04/217.42 Strict DPs: { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_1() } 805.04/217.42 Weak DPs: 805.04/217.42 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.42 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.42 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.42 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest)) 805.04/217.42 , colorrestthetrick[Ite]^#(True(), 805.04/217.42 cs1, 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.42 , colorrestthetrick[Ite]^#(False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 cs, 805.04/217.42 ncs, 805.04/217.42 colorednodes, 805.04/217.42 rest) 805.04/217.42 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.42 Weak Trs: 805.04/217.42 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.42 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 , possible(color, Nil(), colorednodes) -> True() 805.04/217.42 , eqColor(NoColor(), b) -> False() 805.04/217.42 , eqColor(Blue(), NoColor()) -> False() 805.04/217.42 , eqColor(Blue(), Blue()) -> True() 805.04/217.42 , eqColor(Blue(), Red()) -> False() 805.04/217.42 , eqColor(Blue(), Yellow()) -> False() 805.04/217.42 , eqColor(Red(), NoColor()) -> False() 805.04/217.42 , eqColor(Red(), Blue()) -> False() 805.04/217.42 , eqColor(Red(), Red()) -> True() 805.04/217.42 , eqColor(Red(), Yellow()) -> False() 805.04/217.42 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.42 , eqColor(Yellow(), Blue()) -> False() 805.04/217.42 , eqColor(Yellow(), Red()) -> False() 805.04/217.42 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.42 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.42 CN(cs, node) 805.04/217.42 , colornode[Ite][True][Ite](False(), 805.04/217.42 Cons(x, xs), 805.04/217.42 node, 805.04/217.42 colorednodes) 805.04/217.42 -> colornode(xs, node, colorednodes) 805.04/217.42 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.42 , !EQ(S(x), 0()) -> False() 805.04/217.42 , !EQ(0(), S(y)) -> False() 805.04/217.42 , !EQ(0(), 0()) -> True() 805.04/217.42 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.42 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.42 Cons(x, xs), 805.04/217.42 N(n, ns), 805.04/217.42 colorednodes) 805.04/217.42 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.42 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.42 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.42 and(False(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.42 and(True(), eqColorList(cs1, cs2)) 805.04/217.42 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.42 , eqColorList(Nil(), Nil()) -> True() 805.04/217.42 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.42 False() 805.04/217.42 , possible[Ite][True][Ite](False(), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 -> possible(color, xs, colorednodes) 805.04/217.42 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.42 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.42 node, 805.04/217.42 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.42 , colorof(node, Nil()) -> NoColor() 805.04/217.42 , colorof[Ite][True][Ite](True(), 805.04/217.42 node, 805.04/217.42 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.42 -> x 805.04/217.42 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.42 colorof(node, xs) 805.04/217.42 , and(True(), True()) -> True() 805.04/217.42 , and(True(), False()) -> False() 805.04/217.42 , and(False(), True()) -> False() 805.04/217.42 , and(False(), False()) -> False() } 805.04/217.42 Obligation: 805.04/217.42 innermost runtime complexity 805.04/217.42 Answer: 805.04/217.42 YES(O(1),O(1)) 805.04/217.42 805.04/217.42 We use the processor 'matrix interpretation of dimension 1' to 805.04/217.42 orient following rules strictly. 805.04/217.42 805.04/217.42 DPs: 805.04/217.42 { 1: colorrest^#(cs, ncs, colorednodes, Nil()) -> c_1() 805.04/217.42 , 2: graphcolour^#(Cons(x, xs), cs) -> 805.04/217.42 c_2(colorrest^#(cs, 805.04/217.42 cs, 805.04/217.42 Cons(colornode(cs, x, Nil()), Nil()), 805.04/217.42 xs)) } 805.04/217.42 Trs: 805.04/217.42 { colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.42 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.42 Cons(x, xs), 805.04/217.42 N(n, ns), 805.04/217.42 colorednodes) 805.04/217.42 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.42 False() 805.04/217.42 , possible[Ite][True][Ite](False(), 805.04/217.42 color, 805.04/217.42 Cons(x, xs), 805.04/217.42 colorednodes) 805.04/217.42 -> possible(color, xs, colorednodes) } 805.04/217.42 805.04/217.42 Sub-proof: 805.04/217.42 ---------- 805.04/217.42 The following argument positions are usable: 805.04/217.42 Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, 805.04/217.42 Uargs(c_5) = {1} 805.04/217.42 805.04/217.42 TcT has computed the following constructor-restricted matrix 805.04/217.42 interpretation. Note that the diagonal of the component-wise maxima 805.04/217.42 of interpretation-entries (of constructors) contains no more than 0 805.04/217.42 non-zero entries. 805.04/217.42 805.04/217.42 [True] = [0] 805.04/217.42 805.04/217.42 [NoColor] = [0] 805.04/217.42 805.04/217.42 [possible](x1, x2, x3) = [7] x1 + [7] x3 + [0] 805.04/217.42 805.04/217.42 [eqColor](x1, x2) = [0] 805.04/217.42 805.04/217.42 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [7] x2 + [7] x3 + [7] x4 + [1] 805.04/217.42 805.04/217.42 [CN](x1, x2) = [5] 805.04/217.42 805.04/217.42 [!EQ](x1, x2) = [0] 805.04/217.42 805.04/217.42 [Blue] = [0] 805.04/217.42 805.04/217.42 [Cons](x1, x2) = [0] 805.04/217.42 805.04/217.42 [colornode](x1, x2, x3) = [7] x2 + [7] x3 + [5] 805.04/217.42 805.04/217.42 [NotPossible] = [7] 805.04/217.42 805.04/217.42 [eqColorList](x1, x2) = [0] 805.04/217.42 805.04/217.42 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [7] x2 + [7] x3 + [7] x4 + [1] 805.04/217.42 805.04/217.42 [False] = [0] 805.04/217.42 805.04/217.42 [Red] = [0] 805.04/217.42 805.04/217.42 [colorof](x1, x2) = [7] x1 + [0] 805.04/217.42 805.04/217.42 [N](x1, x2) = [0] 805.04/217.42 805.04/217.42 [Nil] = [0] 805.04/217.42 805.04/217.42 [colorof[Ite][True][Ite]](x1, x2, x3) = [7] x2 + [7] x3 + [0] 805.04/217.42 805.04/217.42 [and](x1, x2) = [0] 805.04/217.42 805.04/217.42 [Yellow] = [0] 805.04/217.42 805.04/217.42 [S](x1) = [0] 805.04/217.42 805.04/217.42 [0] = [0] 805.04/217.42 805.04/217.42 [colorrest^#](x1, x2, x3, x4) = [3] x1 + [1] 805.04/217.42 805.04/217.42 [graphcolour^#](x1, x2) = [7] x1 + [7] x2 + [7] 805.04/217.42 805.04/217.42 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [7] x2 + [2] 805.04/217.42 805.04/217.42 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [7] x3 + [2] 805.04/217.42 805.04/217.42 [c_1] = [0] 805.04/217.42 805.04/217.42 [c_2](x1) = [2] x1 + [1] 805.04/217.42 805.04/217.42 [c_3](x1) = [1] x1 + [0] 805.04/217.42 805.04/217.42 [c_4](x1) = [2] x1 + [0] 805.04/217.42 805.04/217.43 [c_5](x1) = [1] x1 + [0] 805.04/217.43 805.04/217.43 The order satisfies the following ordering constraints: 805.04/217.43 805.04/217.43 [possible(color, Cons(x, xs), colorednodes)] = [7] color + [7] colorednodes + [0] 805.04/217.43 ? [7] color + [7] colorednodes + [1] 805.04/217.43 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.43 color, 805.04/217.43 Cons(x, xs), 805.04/217.43 colorednodes)] 805.04/217.43 805.04/217.43 [possible(color, Nil(), colorednodes)] = [7] color + [7] colorednodes + [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [eqColor(NoColor(), b)] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Blue(), NoColor())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Blue(), Blue())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [eqColor(Blue(), Red())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Blue(), Yellow())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Red(), NoColor())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Red(), Blue())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Red(), Red())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [eqColor(Red(), Yellow())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Yellow(), NoColor())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Yellow(), Blue())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Yellow(), Red())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColor(Yellow(), Yellow())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [7] node + [7] colorednodes + [7] cs + [1] 805.04/217.43 ? [5] 805.04/217.43 = [CN(cs, node)] 805.04/217.43 805.04/217.43 [colornode[Ite][True][Ite](False(), = [7] node + [7] colorednodes + [1] 805.04/217.43 Cons(x, xs), 805.04/217.43 node, 805.04/217.43 colorednodes)] 805.04/217.43 ? [7] node + [7] colorednodes + [5] 805.04/217.43 = [colornode(xs, node, colorednodes)] 805.04/217.43 805.04/217.43 [!EQ(S(x), S(y))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [!EQ(x, y)] 805.04/217.43 805.04/217.43 [!EQ(S(x), 0())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [!EQ(0(), S(y))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [!EQ(0(), 0())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [7] colorednodes + [5] 805.04/217.43 > [7] colorednodes + [1] 805.04/217.43 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.43 Cons(x, xs), 805.04/217.43 N(n, ns), 805.04/217.43 colorednodes)] 805.04/217.43 805.04/217.43 [colornode(Nil(), node, colorednodes)] = [7] node + [7] colorednodes + [5] 805.04/217.43 ? [7] 805.04/217.43 = [NotPossible()] 805.04/217.43 805.04/217.43 [eqColorList(Cons(c1, cs1), Nil())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.43 805.04/217.43 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [eqColorList(Nil(), Nil())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [7] adjs + [7] color + [7] colorednodes + [1] 805.04/217.43 > [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [possible[Ite][True][Ite](False(), = [7] color + [7] colorednodes + [1] 805.04/217.43 color, 805.04/217.43 Cons(x, xs), 805.04/217.43 colorednodes)] 805.04/217.43 > [7] color + [7] colorednodes + [0] 805.04/217.43 = [possible(color, xs, colorednodes)] 805.04/217.43 805.04/217.43 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [7] node + [0] 805.04/217.43 >= [7] node + [0] 805.04/217.43 = [colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.43 node, 805.04/217.43 Cons(CN(cl, N(name, adjs)), xs))] 805.04/217.43 805.04/217.43 [colorof(node, Nil())] = [7] node + [0] 805.04/217.43 >= [0] 805.04/217.43 = [NoColor()] 805.04/217.43 805.04/217.43 [colorof[Ite][True][Ite](True(), = [7] node + [0] 805.04/217.43 node, 805.04/217.43 Cons(CN(Cons(x, xs), n), xs'))] 805.04/217.43 ? [1] x + [0] 805.04/217.43 = [x] 805.04/217.43 805.04/217.43 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [7] node + [0] 805.04/217.43 >= [7] node + [0] 805.04/217.43 = [colorof(node, xs)] 805.04/217.43 805.04/217.43 [and(True(), True())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [True()] 805.04/217.43 805.04/217.43 [and(True(), False())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [and(False(), True())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [and(False(), False())] = [0] 805.04/217.43 >= [0] 805.04/217.43 = [False()] 805.04/217.43 805.04/217.43 [colorrest^#(cs, ncs, colorednodes, Nil())] = [3] cs + [1] 805.04/217.43 > [0] 805.04/217.43 = [c_1()] 805.04/217.43 805.04/217.43 [graphcolour^#(Cons(x, xs), cs)] = [7] cs + [7] 805.04/217.43 > [6] cs + [3] 805.04/217.43 = [c_2(colorrest^#(cs, 805.04/217.43 cs, 805.04/217.43 Cons(colornode(cs, x, Nil()), Nil()), 805.04/217.43 xs))] 805.04/217.43 805.04/217.43 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [7] cs + [2] 805.04/217.43 >= [7] cs + [2] 805.04/217.43 = [c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest))] 805.04/217.43 805.04/217.43 [colorrestthetrick[Ite]^#(True(), = [7] cs + [2] 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest)] 805.04/217.43 >= [6] cs + [2] 805.04/217.43 = [c_4(colorrest^#(cs, cs1, colorednodes, rest))] 805.04/217.43 805.04/217.43 [colorrestthetrick[Ite]^#(False(), = [7] cs + [2] 805.04/217.43 Cons(x, xs), 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest)] 805.04/217.43 >= [7] cs + [2] 805.04/217.43 = [c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 805.04/217.43 805.04/217.43 805.04/217.43 The strictly oriented rules are moved into the weak component. 805.04/217.43 805.04/217.43 We are left with following problem, upon which TcT provides the 805.04/217.43 certificate YES(O(1),O(1)). 805.04/217.43 805.04/217.43 Weak DPs: 805.04/217.43 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_1() 805.04/217.43 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.43 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.43 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.43 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest)) 805.04/217.43 , colorrestthetrick[Ite]^#(True(), 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest) 805.04/217.43 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.43 , colorrestthetrick[Ite]^#(False(), 805.04/217.43 Cons(x, xs), 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest) 805.04/217.43 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.43 Weak Trs: 805.04/217.43 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.43 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.43 color, 805.04/217.43 Cons(x, xs), 805.04/217.43 colorednodes) 805.04/217.43 , possible(color, Nil(), colorednodes) -> True() 805.04/217.43 , eqColor(NoColor(), b) -> False() 805.04/217.43 , eqColor(Blue(), NoColor()) -> False() 805.04/217.43 , eqColor(Blue(), Blue()) -> True() 805.04/217.43 , eqColor(Blue(), Red()) -> False() 805.04/217.43 , eqColor(Blue(), Yellow()) -> False() 805.04/217.43 , eqColor(Red(), NoColor()) -> False() 805.04/217.43 , eqColor(Red(), Blue()) -> False() 805.04/217.43 , eqColor(Red(), Red()) -> True() 805.04/217.43 , eqColor(Red(), Yellow()) -> False() 805.04/217.43 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.43 , eqColor(Yellow(), Blue()) -> False() 805.04/217.43 , eqColor(Yellow(), Red()) -> False() 805.04/217.43 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.43 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.43 CN(cs, node) 805.04/217.43 , colornode[Ite][True][Ite](False(), 805.04/217.43 Cons(x, xs), 805.04/217.43 node, 805.04/217.43 colorednodes) 805.04/217.43 -> colornode(xs, node, colorednodes) 805.04/217.43 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.43 , !EQ(S(x), 0()) -> False() 805.04/217.43 , !EQ(0(), S(y)) -> False() 805.04/217.43 , !EQ(0(), 0()) -> True() 805.04/217.43 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.43 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.43 Cons(x, xs), 805.04/217.43 N(n, ns), 805.04/217.43 colorednodes) 805.04/217.43 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.43 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.43 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.43 and(True(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.43 and(True(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.43 and(True(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.43 , eqColorList(Nil(), Nil()) -> True() 805.04/217.43 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.43 False() 805.04/217.43 , possible[Ite][True][Ite](False(), 805.04/217.43 color, 805.04/217.43 Cons(x, xs), 805.04/217.43 colorednodes) 805.04/217.43 -> possible(color, xs, colorednodes) 805.04/217.43 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.43 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.43 node, 805.04/217.43 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.43 , colorof(node, Nil()) -> NoColor() 805.04/217.43 , colorof[Ite][True][Ite](True(), 805.04/217.43 node, 805.04/217.43 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.43 -> x 805.04/217.43 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.43 colorof(node, xs) 805.04/217.43 , and(True(), True()) -> True() 805.04/217.43 , and(True(), False()) -> False() 805.04/217.43 , and(False(), True()) -> False() 805.04/217.43 , and(False(), False()) -> False() } 805.04/217.43 Obligation: 805.04/217.43 innermost runtime complexity 805.04/217.43 Answer: 805.04/217.43 YES(O(1),O(1)) 805.04/217.43 805.04/217.43 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.43 closed under successors. The DPs are removed. 805.04/217.43 805.04/217.43 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_1() 805.04/217.43 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.43 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.43 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.43 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest)) 805.04/217.43 , colorrestthetrick[Ite]^#(True(), 805.04/217.43 cs1, 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest) 805.04/217.43 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.43 , colorrestthetrick[Ite]^#(False(), 805.04/217.43 Cons(x, xs), 805.04/217.43 cs, 805.04/217.43 ncs, 805.04/217.43 colorednodes, 805.04/217.43 rest) 805.04/217.43 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.43 805.04/217.43 We are left with following problem, upon which TcT provides the 805.04/217.43 certificate YES(O(1),O(1)). 805.04/217.43 805.04/217.43 Weak Trs: 805.04/217.43 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.43 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.43 color, 805.04/217.43 Cons(x, xs), 805.04/217.43 colorednodes) 805.04/217.43 , possible(color, Nil(), colorednodes) -> True() 805.04/217.43 , eqColor(NoColor(), b) -> False() 805.04/217.43 , eqColor(Blue(), NoColor()) -> False() 805.04/217.43 , eqColor(Blue(), Blue()) -> True() 805.04/217.43 , eqColor(Blue(), Red()) -> False() 805.04/217.43 , eqColor(Blue(), Yellow()) -> False() 805.04/217.43 , eqColor(Red(), NoColor()) -> False() 805.04/217.43 , eqColor(Red(), Blue()) -> False() 805.04/217.43 , eqColor(Red(), Red()) -> True() 805.04/217.43 , eqColor(Red(), Yellow()) -> False() 805.04/217.43 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.43 , eqColor(Yellow(), Blue()) -> False() 805.04/217.43 , eqColor(Yellow(), Red()) -> False() 805.04/217.43 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.43 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.43 CN(cs, node) 805.04/217.43 , colornode[Ite][True][Ite](False(), 805.04/217.43 Cons(x, xs), 805.04/217.43 node, 805.04/217.43 colorednodes) 805.04/217.43 -> colornode(xs, node, colorednodes) 805.04/217.43 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.43 , !EQ(S(x), 0()) -> False() 805.04/217.43 , !EQ(0(), S(y)) -> False() 805.04/217.43 , !EQ(0(), 0()) -> True() 805.04/217.43 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.43 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.43 Cons(x, xs), 805.04/217.43 N(n, ns), 805.04/217.43 colorednodes) 805.04/217.43 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.43 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.43 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.43 and(True(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.43 and(False(), eqColorList(cs1, cs2)) 805.04/217.43 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.44 , eqColorList(Nil(), Nil()) -> True() 805.04/217.44 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.44 False() 805.04/217.44 , possible[Ite][True][Ite](False(), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 -> possible(color, xs, colorednodes) 805.04/217.44 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.44 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.44 node, 805.04/217.44 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.44 , colorof(node, Nil()) -> NoColor() 805.04/217.44 , colorof[Ite][True][Ite](True(), 805.04/217.44 node, 805.04/217.44 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.44 -> x 805.04/217.44 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.44 colorof(node, xs) 805.04/217.44 , and(True(), True()) -> True() 805.04/217.44 , and(True(), False()) -> False() 805.04/217.44 , and(False(), True()) -> False() 805.04/217.44 , and(False(), False()) -> False() } 805.04/217.44 Obligation: 805.04/217.44 innermost runtime complexity 805.04/217.44 Answer: 805.04/217.44 YES(O(1),O(1)) 805.04/217.44 805.04/217.44 No rule is usable, rules are removed from the input problem. 805.04/217.44 805.04/217.44 We are left with following problem, upon which TcT provides the 805.04/217.44 certificate YES(O(1),O(1)). 805.04/217.44 805.04/217.44 Rules: Empty 805.04/217.44 Obligation: 805.04/217.44 innermost runtime complexity 805.04/217.44 Answer: 805.04/217.44 YES(O(1),O(1)) 805.04/217.44 805.04/217.44 Empty rules are trivially bounded 805.04/217.44 805.04/217.44 S) We are left with following problem, upon which TcT provides the 805.04/217.44 certificate YES(O(1),POLY). 805.04/217.44 805.04/217.44 Strict DPs: 805.04/217.44 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.44 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 c_3(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_4(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_5(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_6(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_7(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_8(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_9(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_10(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_11(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_12(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_13(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_14(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_15(eqColorList^#(cs1, cs2)) 805.04/217.44 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.44 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest), 805.04/217.44 eqColorList^#(cs1, ncs)) } 805.04/217.44 Weak DPs: 805.04/217.44 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() 805.04/217.44 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.44 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.44 , colorrestthetrick[Ite]^#(True(), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.44 , colorrestthetrick[Ite]^#(False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.44 Weak Trs: 805.04/217.44 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.44 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 , possible(color, Nil(), colorednodes) -> True() 805.04/217.44 , eqColor(NoColor(), b) -> False() 805.04/217.44 , eqColor(Blue(), NoColor()) -> False() 805.04/217.44 , eqColor(Blue(), Blue()) -> True() 805.04/217.44 , eqColor(Blue(), Red()) -> False() 805.04/217.44 , eqColor(Blue(), Yellow()) -> False() 805.04/217.44 , eqColor(Red(), NoColor()) -> False() 805.04/217.44 , eqColor(Red(), Blue()) -> False() 805.04/217.44 , eqColor(Red(), Red()) -> True() 805.04/217.44 , eqColor(Red(), Yellow()) -> False() 805.04/217.44 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.44 , eqColor(Yellow(), Blue()) -> False() 805.04/217.44 , eqColor(Yellow(), Red()) -> False() 805.04/217.44 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.44 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.44 CN(cs, node) 805.04/217.44 , colornode[Ite][True][Ite](False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 node, 805.04/217.44 colorednodes) 805.04/217.44 -> colornode(xs, node, colorednodes) 805.04/217.44 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.44 , !EQ(S(x), 0()) -> False() 805.04/217.44 , !EQ(0(), S(y)) -> False() 805.04/217.44 , !EQ(0(), 0()) -> True() 805.04/217.44 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.44 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.44 Cons(x, xs), 805.04/217.44 N(n, ns), 805.04/217.44 colorednodes) 805.04/217.44 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.44 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.44 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.44 , eqColorList(Nil(), Nil()) -> True() 805.04/217.44 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.44 False() 805.04/217.44 , possible[Ite][True][Ite](False(), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 -> possible(color, xs, colorednodes) 805.04/217.44 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.44 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.44 node, 805.04/217.44 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.44 , colorof(node, Nil()) -> NoColor() 805.04/217.44 , colorof[Ite][True][Ite](True(), 805.04/217.44 node, 805.04/217.44 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.44 -> x 805.04/217.44 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.44 colorof(node, xs) 805.04/217.44 , and(True(), True()) -> True() 805.04/217.44 , and(True(), False()) -> False() 805.04/217.44 , and(False(), True()) -> False() 805.04/217.44 , and(False(), False()) -> False() } 805.04/217.44 Obligation: 805.04/217.44 innermost runtime complexity 805.04/217.44 Answer: 805.04/217.44 YES(O(1),POLY) 805.04/217.44 805.04/217.44 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.44 closed under successors. The DPs are removed. 805.04/217.44 805.04/217.44 { colorrest^#(cs, ncs, colorednodes, Nil()) -> c_2() } 805.04/217.44 805.04/217.44 We are left with following problem, upon which TcT provides the 805.04/217.44 certificate YES(O(1),POLY). 805.04/217.44 805.04/217.44 Strict DPs: 805.04/217.44 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.44 , eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 c_3(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_4(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_5(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_6(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_7(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_8(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_9(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_10(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_11(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_12(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_13(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_14(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_15(eqColorList^#(cs1, cs2)) 805.04/217.44 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.44 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest), 805.04/217.44 eqColorList^#(cs1, ncs)) } 805.04/217.44 Weak DPs: 805.04/217.44 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.44 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.44 , colorrestthetrick[Ite]^#(True(), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.44 , colorrestthetrick[Ite]^#(False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.44 Weak Trs: 805.04/217.44 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.44 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 , possible(color, Nil(), colorednodes) -> True() 805.04/217.44 , eqColor(NoColor(), b) -> False() 805.04/217.44 , eqColor(Blue(), NoColor()) -> False() 805.04/217.44 , eqColor(Blue(), Blue()) -> True() 805.04/217.44 , eqColor(Blue(), Red()) -> False() 805.04/217.44 , eqColor(Blue(), Yellow()) -> False() 805.04/217.44 , eqColor(Red(), NoColor()) -> False() 805.04/217.44 , eqColor(Red(), Blue()) -> False() 805.04/217.44 , eqColor(Red(), Red()) -> True() 805.04/217.44 , eqColor(Red(), Yellow()) -> False() 805.04/217.44 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.44 , eqColor(Yellow(), Blue()) -> False() 805.04/217.44 , eqColor(Yellow(), Red()) -> False() 805.04/217.44 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.44 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.44 CN(cs, node) 805.04/217.44 , colornode[Ite][True][Ite](False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 node, 805.04/217.44 colorednodes) 805.04/217.44 -> colornode(xs, node, colorednodes) 805.04/217.44 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.44 , !EQ(S(x), 0()) -> False() 805.04/217.44 , !EQ(0(), S(y)) -> False() 805.04/217.44 , !EQ(0(), 0()) -> True() 805.04/217.44 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.44 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.44 Cons(x, xs), 805.04/217.44 N(n, ns), 805.04/217.44 colorednodes) 805.04/217.44 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.44 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.44 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.44 , eqColorList(Nil(), Nil()) -> True() 805.04/217.44 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.44 False() 805.04/217.44 , possible[Ite][True][Ite](False(), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 -> possible(color, xs, colorednodes) 805.04/217.44 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.44 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.44 node, 805.04/217.44 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.44 , colorof(node, Nil()) -> NoColor() 805.04/217.44 , colorof[Ite][True][Ite](True(), 805.04/217.44 node, 805.04/217.44 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.44 -> x 805.04/217.44 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.44 colorof(node, xs) 805.04/217.44 , and(True(), True()) -> True() 805.04/217.44 , and(True(), False()) -> False() 805.04/217.44 , and(False(), True()) -> False() 805.04/217.44 , and(False(), False()) -> False() } 805.04/217.44 Obligation: 805.04/217.44 innermost runtime complexity 805.04/217.44 Answer: 805.04/217.44 YES(O(1),POLY) 805.04/217.44 805.04/217.44 We analyse the complexity of following sub-problems (R) and (S). 805.04/217.44 Problem (S) is obtained from the input problem by shifting strict 805.04/217.44 rules from (R) into the weak component: 805.04/217.44 805.04/217.44 Problem (R): 805.04/217.44 ------------ 805.04/217.44 Strict DPs: 805.04/217.44 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() } 805.04/217.44 Weak DPs: 805.04/217.44 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 c_3(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_4(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_5(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_6(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_7(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_8(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_9(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_10(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_11(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_12(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_13(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_14(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_15(eqColorList^#(cs1, cs2)) 805.04/217.44 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.44 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.44 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.44 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest), 805.04/217.44 eqColorList^#(cs1, ncs)) 805.04/217.44 , colorrestthetrick[Ite]^#(True(), 805.04/217.44 cs1, 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.44 , colorrestthetrick[Ite]^#(False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 cs, 805.04/217.44 ncs, 805.04/217.44 colorednodes, 805.04/217.44 rest) 805.04/217.44 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.44 Weak Trs: 805.04/217.44 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.44 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 , possible(color, Nil(), colorednodes) -> True() 805.04/217.44 , eqColor(NoColor(), b) -> False() 805.04/217.44 , eqColor(Blue(), NoColor()) -> False() 805.04/217.44 , eqColor(Blue(), Blue()) -> True() 805.04/217.44 , eqColor(Blue(), Red()) -> False() 805.04/217.44 , eqColor(Blue(), Yellow()) -> False() 805.04/217.44 , eqColor(Red(), NoColor()) -> False() 805.04/217.44 , eqColor(Red(), Blue()) -> False() 805.04/217.44 , eqColor(Red(), Red()) -> True() 805.04/217.44 , eqColor(Red(), Yellow()) -> False() 805.04/217.44 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.44 , eqColor(Yellow(), Blue()) -> False() 805.04/217.44 , eqColor(Yellow(), Red()) -> False() 805.04/217.44 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.44 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.44 CN(cs, node) 805.04/217.44 , colornode[Ite][True][Ite](False(), 805.04/217.44 Cons(x, xs), 805.04/217.44 node, 805.04/217.44 colorednodes) 805.04/217.44 -> colornode(xs, node, colorednodes) 805.04/217.44 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.44 , !EQ(S(x), 0()) -> False() 805.04/217.44 , !EQ(0(), S(y)) -> False() 805.04/217.44 , !EQ(0(), 0()) -> True() 805.04/217.44 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.44 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.44 Cons(x, xs), 805.04/217.44 N(n, ns), 805.04/217.44 colorednodes) 805.04/217.44 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.44 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.44 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 and(False(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 and(True(), eqColorList(cs1, cs2)) 805.04/217.44 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.44 , eqColorList(Nil(), Nil()) -> True() 805.04/217.44 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.44 False() 805.04/217.44 , possible[Ite][True][Ite](False(), 805.04/217.44 color, 805.04/217.44 Cons(x, xs), 805.04/217.44 colorednodes) 805.04/217.44 -> possible(color, xs, colorednodes) 805.04/217.44 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.44 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.44 node, 805.04/217.44 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.44 , colorof(node, Nil()) -> NoColor() 805.04/217.44 , colorof[Ite][True][Ite](True(), 805.04/217.44 node, 805.04/217.44 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.44 -> x 805.04/217.44 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.44 colorof(node, xs) 805.04/217.44 , and(True(), True()) -> True() 805.04/217.44 , and(True(), False()) -> False() 805.04/217.44 , and(False(), True()) -> False() 805.04/217.44 , and(False(), False()) -> False() } 805.04/217.44 StartTerms: basic terms 805.04/217.44 Strategy: innermost 805.04/217.44 805.04/217.44 Problem (S): 805.04/217.44 ------------ 805.04/217.44 Strict DPs: 805.04/217.44 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.44 c_3(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_4(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_5(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.44 c_6(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.44 c_7(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.44 c_8(eqColorList^#(cs1, cs2)) 805.04/217.44 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.44 c_9(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_10(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_11(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_12(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_13(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_14(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_15(eqColorList^#(cs1, cs2)) 805.04/217.45 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.45 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest), 805.04/217.45 eqColorList^#(cs1, ncs)) } 805.04/217.45 Weak DPs: 805.04/217.45 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.45 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.45 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.45 , colorrestthetrick[Ite]^#(True(), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.45 , colorrestthetrick[Ite]^#(False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.45 Weak Trs: 805.04/217.45 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.45 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.45 colorednodes) 805.04/217.45 , possible(color, Nil(), colorednodes) -> True() 805.04/217.45 , eqColor(NoColor(), b) -> False() 805.04/217.45 , eqColor(Blue(), NoColor()) -> False() 805.04/217.45 , eqColor(Blue(), Blue()) -> True() 805.04/217.45 , eqColor(Blue(), Red()) -> False() 805.04/217.45 , eqColor(Blue(), Yellow()) -> False() 805.04/217.45 , eqColor(Red(), NoColor()) -> False() 805.04/217.45 , eqColor(Red(), Blue()) -> False() 805.04/217.45 , eqColor(Red(), Red()) -> True() 805.04/217.45 , eqColor(Red(), Yellow()) -> False() 805.04/217.45 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.45 , eqColor(Yellow(), Blue()) -> False() 805.04/217.45 , eqColor(Yellow(), Red()) -> False() 805.04/217.45 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.45 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.45 CN(cs, node) 805.04/217.45 , colornode[Ite][True][Ite](False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 node, 805.04/217.45 colorednodes) 805.04/217.45 -> colornode(xs, node, colorednodes) 805.04/217.45 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.45 , !EQ(S(x), 0()) -> False() 805.04/217.45 , !EQ(0(), S(y)) -> False() 805.04/217.45 , !EQ(0(), 0()) -> True() 805.04/217.45 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.45 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.45 Cons(x, xs), 805.04/217.45 N(n, ns), 805.04/217.45 colorednodes) 805.04/217.45 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.45 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.45 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.45 , eqColorList(Nil(), Nil()) -> True() 805.04/217.45 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.45 False() 805.04/217.45 , possible[Ite][True][Ite](False(), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.45 colorednodes) 805.04/217.45 -> possible(color, xs, colorednodes) 805.04/217.45 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.45 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.45 node, 805.04/217.45 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.45 , colorof(node, Nil()) -> NoColor() 805.04/217.45 , colorof[Ite][True][Ite](True(), 805.04/217.45 node, 805.04/217.45 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.45 -> x 805.04/217.45 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.45 colorof(node, xs) 805.04/217.45 , and(True(), True()) -> True() 805.04/217.45 , and(True(), False()) -> False() 805.04/217.45 , and(False(), True()) -> False() 805.04/217.45 , and(False(), False()) -> False() } 805.04/217.45 StartTerms: basic terms 805.04/217.45 Strategy: innermost 805.04/217.45 805.04/217.45 Overall, the transformation results in the following sub-problem(s): 805.04/217.45 805.04/217.45 Generated new problems: 805.04/217.45 ----------------------- 805.04/217.45 R) Strict DPs: 805.04/217.45 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() } 805.04/217.45 Weak DPs: 805.04/217.45 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.45 c_3(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_4(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_5(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_6(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_7(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_8(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_9(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_10(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_11(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_12(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_13(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_14(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_15(eqColorList^#(cs1, cs2)) 805.04/217.45 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.45 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.45 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.45 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest), 805.04/217.45 eqColorList^#(cs1, ncs)) 805.04/217.45 , colorrestthetrick[Ite]^#(True(), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.45 , colorrestthetrick[Ite]^#(False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.45 Weak Trs: 805.04/217.45 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.45 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.45 colorednodes) 805.04/217.45 , possible(color, Nil(), colorednodes) -> True() 805.04/217.45 , eqColor(NoColor(), b) -> False() 805.04/217.45 , eqColor(Blue(), NoColor()) -> False() 805.04/217.45 , eqColor(Blue(), Blue()) -> True() 805.04/217.45 , eqColor(Blue(), Red()) -> False() 805.04/217.45 , eqColor(Blue(), Yellow()) -> False() 805.04/217.45 , eqColor(Red(), NoColor()) -> False() 805.04/217.45 , eqColor(Red(), Blue()) -> False() 805.04/217.45 , eqColor(Red(), Red()) -> True() 805.04/217.45 , eqColor(Red(), Yellow()) -> False() 805.04/217.45 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.45 , eqColor(Yellow(), Blue()) -> False() 805.04/217.45 , eqColor(Yellow(), Red()) -> False() 805.04/217.45 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.45 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.45 CN(cs, node) 805.04/217.45 , colornode[Ite][True][Ite](False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 node, 805.04/217.45 colorednodes) 805.04/217.45 -> colornode(xs, node, colorednodes) 805.04/217.45 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.45 , !EQ(S(x), 0()) -> False() 805.04/217.45 , !EQ(0(), S(y)) -> False() 805.04/217.45 , !EQ(0(), 0()) -> True() 805.04/217.45 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.45 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.45 Cons(x, xs), 805.04/217.45 N(n, ns), 805.04/217.45 colorednodes) 805.04/217.45 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.45 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.45 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.45 , eqColorList(Nil(), Nil()) -> True() 805.04/217.45 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.45 False() 805.04/217.45 , possible[Ite][True][Ite](False(), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.45 colorednodes) 805.04/217.45 -> possible(color, xs, colorednodes) 805.04/217.45 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.45 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.45 node, 805.04/217.45 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.45 , colorof(node, Nil()) -> NoColor() 805.04/217.45 , colorof[Ite][True][Ite](True(), 805.04/217.45 node, 805.04/217.45 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.45 -> x 805.04/217.45 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.45 colorof(node, xs) 805.04/217.45 , and(True(), True()) -> True() 805.04/217.45 , and(True(), False()) -> False() 805.04/217.45 , and(False(), True()) -> False() 805.04/217.45 , and(False(), False()) -> False() } 805.04/217.45 StartTerms: basic terms 805.04/217.45 Strategy: innermost 805.04/217.45 805.04/217.45 This problem was proven YES(O(1),O(1)). 805.04/217.45 805.04/217.45 S) Strict DPs: 805.04/217.45 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.45 c_3(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_4(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_5(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_6(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_7(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_8(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_9(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_10(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_11(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 c_12(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 c_13(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 c_14(eqColorList^#(cs1, cs2)) 805.04/217.45 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 c_15(eqColorList^#(cs1, cs2)) 805.04/217.45 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.45 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest), 805.04/217.45 eqColorList^#(cs1, ncs)) } 805.04/217.45 Weak DPs: 805.04/217.45 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.45 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.45 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.45 , colorrestthetrick[Ite]^#(True(), 805.04/217.45 cs1, 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.45 , colorrestthetrick[Ite]^#(False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 cs, 805.04/217.45 ncs, 805.04/217.45 colorednodes, 805.04/217.45 rest) 805.04/217.45 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.45 Weak Trs: 805.04/217.45 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.45 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.45 colorednodes) 805.04/217.45 , possible(color, Nil(), colorednodes) -> True() 805.04/217.45 , eqColor(NoColor(), b) -> False() 805.04/217.45 , eqColor(Blue(), NoColor()) -> False() 805.04/217.45 , eqColor(Blue(), Blue()) -> True() 805.04/217.45 , eqColor(Blue(), Red()) -> False() 805.04/217.45 , eqColor(Blue(), Yellow()) -> False() 805.04/217.45 , eqColor(Red(), NoColor()) -> False() 805.04/217.45 , eqColor(Red(), Blue()) -> False() 805.04/217.45 , eqColor(Red(), Red()) -> True() 805.04/217.45 , eqColor(Red(), Yellow()) -> False() 805.04/217.45 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.45 , eqColor(Yellow(), Blue()) -> False() 805.04/217.45 , eqColor(Yellow(), Red()) -> False() 805.04/217.45 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.45 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.45 CN(cs, node) 805.04/217.45 , colornode[Ite][True][Ite](False(), 805.04/217.45 Cons(x, xs), 805.04/217.45 node, 805.04/217.45 colorednodes) 805.04/217.45 -> colornode(xs, node, colorednodes) 805.04/217.45 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.45 , !EQ(S(x), 0()) -> False() 805.04/217.45 , !EQ(0(), S(y)) -> False() 805.04/217.45 , !EQ(0(), 0()) -> True() 805.04/217.45 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.45 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.45 Cons(x, xs), 805.04/217.45 N(n, ns), 805.04/217.45 colorednodes) 805.04/217.45 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.45 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.45 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.45 and(False(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.45 and(True(), eqColorList(cs1, cs2)) 805.04/217.45 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.45 , eqColorList(Nil(), Nil()) -> True() 805.04/217.45 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.45 False() 805.04/217.45 , possible[Ite][True][Ite](False(), 805.04/217.45 color, 805.04/217.45 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 -> possible(color, xs, colorednodes) 805.04/217.46 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.46 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.46 node, 805.04/217.46 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.46 , colorof(node, Nil()) -> NoColor() 805.04/217.46 , colorof[Ite][True][Ite](True(), 805.04/217.46 node, 805.04/217.46 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.46 -> x 805.04/217.46 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.46 colorof(node, xs) 805.04/217.46 , and(True(), True()) -> True() 805.04/217.46 , and(True(), False()) -> False() 805.04/217.46 , and(False(), True()) -> False() 805.04/217.46 , and(False(), False()) -> False() } 805.04/217.46 StartTerms: basic terms 805.04/217.46 Strategy: innermost 805.04/217.46 805.04/217.46 This problem was proven YES(?,POLY). 805.04/217.46 805.04/217.46 805.04/217.46 Proofs for generated problems: 805.04/217.46 ------------------------------ 805.04/217.46 R) We are left with following problem, upon which TcT provides the 805.04/217.46 certificate YES(O(1),O(1)). 805.04/217.46 805.04/217.46 Strict DPs: 805.04/217.46 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() } 805.04/217.46 Weak DPs: 805.04/217.46 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.46 c_3(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_4(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_5(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_6(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_7(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_8(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_9(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_10(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_11(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_12(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_13(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_14(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_15(eqColorList^#(cs1, cs2)) 805.04/217.46 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.46 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.46 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.46 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest), 805.04/217.46 eqColorList^#(cs1, ncs)) 805.04/217.46 , colorrestthetrick[Ite]^#(True(), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.46 , colorrestthetrick[Ite]^#(False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.46 Weak Trs: 805.04/217.46 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.46 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 , possible(color, Nil(), colorednodes) -> True() 805.04/217.46 , eqColor(NoColor(), b) -> False() 805.04/217.46 , eqColor(Blue(), NoColor()) -> False() 805.04/217.46 , eqColor(Blue(), Blue()) -> True() 805.04/217.46 , eqColor(Blue(), Red()) -> False() 805.04/217.46 , eqColor(Blue(), Yellow()) -> False() 805.04/217.46 , eqColor(Red(), NoColor()) -> False() 805.04/217.46 , eqColor(Red(), Blue()) -> False() 805.04/217.46 , eqColor(Red(), Red()) -> True() 805.04/217.46 , eqColor(Red(), Yellow()) -> False() 805.04/217.46 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.46 , eqColor(Yellow(), Blue()) -> False() 805.04/217.46 , eqColor(Yellow(), Red()) -> False() 805.04/217.46 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.46 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.46 CN(cs, node) 805.04/217.46 , colornode[Ite][True][Ite](False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 node, 805.04/217.46 colorednodes) 805.04/217.46 -> colornode(xs, node, colorednodes) 805.04/217.46 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.46 , !EQ(S(x), 0()) -> False() 805.04/217.46 , !EQ(0(), S(y)) -> False() 805.04/217.46 , !EQ(0(), 0()) -> True() 805.04/217.46 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.46 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.46 Cons(x, xs), 805.04/217.46 N(n, ns), 805.04/217.46 colorednodes) 805.04/217.46 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.46 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.46 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.46 , eqColorList(Nil(), Nil()) -> True() 805.04/217.46 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.46 False() 805.04/217.46 , possible[Ite][True][Ite](False(), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 -> possible(color, xs, colorednodes) 805.04/217.46 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.46 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.46 node, 805.04/217.46 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.46 , colorof(node, Nil()) -> NoColor() 805.04/217.46 , colorof[Ite][True][Ite](True(), 805.04/217.46 node, 805.04/217.46 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.46 -> x 805.04/217.46 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.46 colorof(node, xs) 805.04/217.46 , and(True(), True()) -> True() 805.04/217.46 , and(True(), False()) -> False() 805.04/217.46 , and(False(), True()) -> False() 805.04/217.46 , and(False(), False()) -> False() } 805.04/217.46 Obligation: 805.04/217.46 innermost runtime complexity 805.04/217.46 Answer: 805.04/217.46 YES(O(1),O(1)) 805.04/217.46 805.04/217.46 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.46 closed under successors. The DPs are removed. 805.04/217.46 805.04/217.46 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.46 c_3(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_4(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_5(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_6(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_7(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_8(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_9(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_10(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_11(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 c_12(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 c_13(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 c_14(eqColorList^#(cs1, cs2)) 805.04/217.46 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 c_15(eqColorList^#(cs1, cs2)) } 805.04/217.46 805.04/217.46 We are left with following problem, upon which TcT provides the 805.04/217.46 certificate YES(O(1),O(1)). 805.04/217.46 805.04/217.46 Strict DPs: 805.04/217.46 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() } 805.04/217.46 Weak DPs: 805.04/217.46 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.46 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.46 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.46 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest), 805.04/217.46 eqColorList^#(cs1, ncs)) 805.04/217.46 , colorrestthetrick[Ite]^#(True(), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.46 , colorrestthetrick[Ite]^#(False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.46 Weak Trs: 805.04/217.46 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.46 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 , possible(color, Nil(), colorednodes) -> True() 805.04/217.46 , eqColor(NoColor(), b) -> False() 805.04/217.46 , eqColor(Blue(), NoColor()) -> False() 805.04/217.46 , eqColor(Blue(), Blue()) -> True() 805.04/217.46 , eqColor(Blue(), Red()) -> False() 805.04/217.46 , eqColor(Blue(), Yellow()) -> False() 805.04/217.46 , eqColor(Red(), NoColor()) -> False() 805.04/217.46 , eqColor(Red(), Blue()) -> False() 805.04/217.46 , eqColor(Red(), Red()) -> True() 805.04/217.46 , eqColor(Red(), Yellow()) -> False() 805.04/217.46 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.46 , eqColor(Yellow(), Blue()) -> False() 805.04/217.46 , eqColor(Yellow(), Red()) -> False() 805.04/217.46 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.46 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.46 CN(cs, node) 805.04/217.46 , colornode[Ite][True][Ite](False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 node, 805.04/217.46 colorednodes) 805.04/217.46 -> colornode(xs, node, colorednodes) 805.04/217.46 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.46 , !EQ(S(x), 0()) -> False() 805.04/217.46 , !EQ(0(), S(y)) -> False() 805.04/217.46 , !EQ(0(), 0()) -> True() 805.04/217.46 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.46 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.46 Cons(x, xs), 805.04/217.46 N(n, ns), 805.04/217.46 colorednodes) 805.04/217.46 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.46 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.46 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.46 , eqColorList(Nil(), Nil()) -> True() 805.04/217.46 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.46 False() 805.04/217.46 , possible[Ite][True][Ite](False(), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 -> possible(color, xs, colorednodes) 805.04/217.46 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.46 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.46 node, 805.04/217.46 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.46 , colorof(node, Nil()) -> NoColor() 805.04/217.46 , colorof[Ite][True][Ite](True(), 805.04/217.46 node, 805.04/217.46 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.46 -> x 805.04/217.46 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.46 colorof(node, xs) 805.04/217.46 , and(True(), True()) -> True() 805.04/217.46 , and(True(), False()) -> False() 805.04/217.46 , and(False(), True()) -> False() 805.04/217.46 , and(False(), False()) -> False() } 805.04/217.46 Obligation: 805.04/217.46 innermost runtime complexity 805.04/217.46 Answer: 805.04/217.46 YES(O(1),O(1)) 805.04/217.46 805.04/217.46 Due to missing edges in the dependency-graph, the right-hand sides 805.04/217.46 of following rules could be simplified: 805.04/217.46 805.04/217.46 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.46 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest), 805.04/217.46 eqColorList^#(cs1, ncs)) } 805.04/217.46 805.04/217.46 We are left with following problem, upon which TcT provides the 805.04/217.46 certificate YES(O(1),O(1)). 805.04/217.46 805.04/217.46 Strict DPs: 805.04/217.46 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() } 805.04/217.46 Weak DPs: 805.04/217.46 { graphcolour^#(Cons(x, xs), cs) -> 805.04/217.46 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.46 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.46 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest)) 805.04/217.46 , colorrestthetrick[Ite]^#(True(), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.46 , colorrestthetrick[Ite]^#(False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.46 Weak Trs: 805.04/217.46 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.46 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 , possible(color, Nil(), colorednodes) -> True() 805.04/217.46 , eqColor(NoColor(), b) -> False() 805.04/217.46 , eqColor(Blue(), NoColor()) -> False() 805.04/217.46 , eqColor(Blue(), Blue()) -> True() 805.04/217.46 , eqColor(Blue(), Red()) -> False() 805.04/217.46 , eqColor(Blue(), Yellow()) -> False() 805.04/217.46 , eqColor(Red(), NoColor()) -> False() 805.04/217.46 , eqColor(Red(), Blue()) -> False() 805.04/217.46 , eqColor(Red(), Red()) -> True() 805.04/217.46 , eqColor(Red(), Yellow()) -> False() 805.04/217.46 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.46 , eqColor(Yellow(), Blue()) -> False() 805.04/217.46 , eqColor(Yellow(), Red()) -> False() 805.04/217.46 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.46 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.46 CN(cs, node) 805.04/217.46 , colornode[Ite][True][Ite](False(), 805.04/217.46 Cons(x, xs), 805.04/217.46 node, 805.04/217.46 colorednodes) 805.04/217.46 -> colornode(xs, node, colorednodes) 805.04/217.46 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.46 , !EQ(S(x), 0()) -> False() 805.04/217.46 , !EQ(0(), S(y)) -> False() 805.04/217.46 , !EQ(0(), 0()) -> True() 805.04/217.46 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.46 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.46 Cons(x, xs), 805.04/217.46 N(n, ns), 805.04/217.46 colorednodes) 805.04/217.46 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.46 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.46 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.46 and(False(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.46 and(True(), eqColorList(cs1, cs2)) 805.04/217.46 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.46 , eqColorList(Nil(), Nil()) -> True() 805.04/217.46 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.46 False() 805.04/217.46 , possible[Ite][True][Ite](False(), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 -> possible(color, xs, colorednodes) 805.04/217.46 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.46 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.46 node, 805.04/217.46 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.46 , colorof(node, Nil()) -> NoColor() 805.04/217.46 , colorof[Ite][True][Ite](True(), 805.04/217.46 node, 805.04/217.46 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.46 -> x 805.04/217.46 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.46 colorof(node, xs) 805.04/217.46 , and(True(), True()) -> True() 805.04/217.46 , and(True(), False()) -> False() 805.04/217.46 , and(False(), True()) -> False() 805.04/217.46 , and(False(), False()) -> False() } 805.04/217.46 Obligation: 805.04/217.46 innermost runtime complexity 805.04/217.46 Answer: 805.04/217.46 YES(O(1),O(1)) 805.04/217.46 805.04/217.46 We use the processor 'matrix interpretation of dimension 1' to 805.04/217.46 orient following rules strictly. 805.04/217.46 805.04/217.46 DPs: 805.04/217.46 { 2: graphcolour^#(Cons(x, xs), cs) -> 805.04/217.46 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.46 , 4: colorrestthetrick[Ite]^#(True(), 805.04/217.46 cs1, 805.04/217.46 cs, 805.04/217.46 ncs, 805.04/217.46 colorednodes, 805.04/217.46 rest) 805.04/217.46 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) } 805.04/217.46 Trs: 805.04/217.46 { colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.46 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.46 Cons(x, xs), 805.04/217.46 N(n, ns), 805.04/217.46 colorednodes) 805.04/217.46 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.46 False() 805.04/217.46 , possible[Ite][True][Ite](False(), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes) 805.04/217.46 -> possible(color, xs, colorednodes) } 805.04/217.46 805.04/217.46 Sub-proof: 805.04/217.46 ---------- 805.04/217.46 The following argument positions are usable: 805.04/217.46 Uargs(c_2) = {1}, Uargs(c_3) = {1}, Uargs(c_4) = {1}, 805.04/217.46 Uargs(c_5) = {1} 805.04/217.46 805.04/217.46 TcT has computed the following constructor-restricted matrix 805.04/217.46 interpretation. Note that the diagonal of the component-wise maxima 805.04/217.46 of interpretation-entries (of constructors) contains no more than 0 805.04/217.46 non-zero entries. 805.04/217.46 805.04/217.46 [True] = [0] 805.04/217.46 805.04/217.46 [NoColor] = [0] 805.04/217.46 805.04/217.46 [possible](x1, x2, x3) = [7] x1 + [7] x3 + [0] 805.04/217.46 805.04/217.46 [eqColor](x1, x2) = [0] 805.04/217.46 805.04/217.46 [colornode[Ite][True][Ite]](x1, x2, x3, x4) = [7] x2 + [7] x3 + [7] x4 + [1] 805.04/217.46 805.04/217.46 [CN](x1, x2) = [5] 805.04/217.46 805.04/217.46 [!EQ](x1, x2) = [0] 805.04/217.46 805.04/217.46 [Blue] = [0] 805.04/217.46 805.04/217.46 [Cons](x1, x2) = [0] 805.04/217.46 805.04/217.46 [colornode](x1, x2, x3) = [7] x2 + [7] x3 + [5] 805.04/217.46 805.04/217.46 [NotPossible] = [7] 805.04/217.46 805.04/217.46 [eqColorList](x1, x2) = [0] 805.04/217.46 805.04/217.46 [possible[Ite][True][Ite]](x1, x2, x3, x4) = [7] x2 + [7] x3 + [7] x4 + [1] 805.04/217.46 805.04/217.46 [False] = [0] 805.04/217.46 805.04/217.46 [Red] = [0] 805.04/217.46 805.04/217.46 [colorof](x1, x2) = [7] x1 + [0] 805.04/217.46 805.04/217.46 [N](x1, x2) = [0] 805.04/217.46 805.04/217.46 [Nil] = [0] 805.04/217.46 805.04/217.46 [colorof[Ite][True][Ite]](x1, x2, x3) = [7] x2 + [7] x3 + [0] 805.04/217.46 805.04/217.46 [and](x1, x2) = [0] 805.04/217.46 805.04/217.46 [Yellow] = [0] 805.04/217.46 805.04/217.46 [S](x1) = [0] 805.04/217.46 805.04/217.46 [0] = [0] 805.04/217.46 805.04/217.46 [colorrest^#](x1, x2, x3, x4) = [1] x1 + [0] 805.04/217.46 805.04/217.46 [graphcolour^#](x1, x2) = [7] x1 + [7] x2 + [7] 805.04/217.46 805.04/217.46 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [7] x2 + [1] 805.04/217.46 805.04/217.46 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [7] x3 + [1] 805.04/217.46 805.04/217.46 [c_1] = [0] 805.04/217.46 805.04/217.46 [c_2](x1) = [1] x1 + [3] 805.04/217.46 805.04/217.46 [c_3](x1) = [1] x1 + [0] 805.04/217.46 805.04/217.46 [c_4](x1) = [4] x1 + [0] 805.04/217.46 805.04/217.46 [c_5](x1) = [1] x1 + [0] 805.04/217.46 805.04/217.46 The order satisfies the following ordering constraints: 805.04/217.46 805.04/217.46 [possible(color, Cons(x, xs), colorednodes)] = [7] color + [7] colorednodes + [0] 805.04/217.46 ? [7] color + [7] colorednodes + [1] 805.04/217.46 = [possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.46 color, 805.04/217.46 Cons(x, xs), 805.04/217.46 colorednodes)] 805.04/217.46 805.04/217.46 [possible(color, Nil(), colorednodes)] = [7] color + [7] colorednodes + [0] 805.04/217.46 >= [0] 805.04/217.46 = [True()] 805.04/217.46 805.04/217.46 [eqColor(NoColor(), b)] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Blue(), NoColor())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Blue(), Blue())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [True()] 805.04/217.46 805.04/217.46 [eqColor(Blue(), Red())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Blue(), Yellow())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Red(), NoColor())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Red(), Blue())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Red(), Red())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [True()] 805.04/217.46 805.04/217.46 [eqColor(Red(), Yellow())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Yellow(), NoColor())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Yellow(), Blue())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Yellow(), Red())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColor(Yellow(), Yellow())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [True()] 805.04/217.46 805.04/217.46 [colornode[Ite][True][Ite](True(), cs, node, colorednodes)] = [7] node + [7] colorednodes + [7] cs + [1] 805.04/217.46 ? [5] 805.04/217.46 = [CN(cs, node)] 805.04/217.46 805.04/217.46 [colornode[Ite][True][Ite](False(), = [7] node + [7] colorednodes + [1] 805.04/217.46 Cons(x, xs), 805.04/217.46 node, 805.04/217.46 colorednodes)] 805.04/217.46 ? [7] node + [7] colorednodes + [5] 805.04/217.46 = [colornode(xs, node, colorednodes)] 805.04/217.46 805.04/217.46 [!EQ(S(x), S(y))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [!EQ(x, y)] 805.04/217.46 805.04/217.46 [!EQ(S(x), 0())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [!EQ(0(), S(y))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [!EQ(0(), 0())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [True()] 805.04/217.46 805.04/217.46 [colornode(Cons(x, xs), N(n, ns), colorednodes)] = [7] colorednodes + [5] 805.04/217.46 > [7] colorednodes + [1] 805.04/217.46 = [colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.46 Cons(x, xs), 805.04/217.46 N(n, ns), 805.04/217.46 colorednodes)] 805.04/217.46 805.04/217.46 [colornode(Nil(), node, colorednodes)] = [7] node + [7] colorednodes + [5] 805.04/217.46 ? [7] 805.04/217.46 = [NotPossible()] 805.04/217.46 805.04/217.46 [eqColorList(Cons(c1, cs1), Nil())] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [False()] 805.04/217.46 805.04/217.46 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.46 805.04/217.46 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.46 805.04/217.46 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.46 805.04/217.46 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.46 805.04/217.46 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.46 >= [0] 805.04/217.46 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.46 805.04/217.46 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.47 805.04/217.47 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [False()] 805.04/217.47 805.04/217.47 [eqColorList(Nil(), Nil())] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [True()] 805.04/217.47 805.04/217.47 [possible[Ite][True][Ite](True(), color, adjs, colorednodes)] = [7] adjs + [7] color + [7] colorednodes + [1] 805.04/217.47 > [0] 805.04/217.47 = [False()] 805.04/217.47 805.04/217.47 [possible[Ite][True][Ite](False(), = [7] color + [7] colorednodes + [1] 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes)] 805.04/217.47 > [7] color + [7] colorednodes + [0] 805.04/217.47 = [possible(color, xs, colorednodes)] 805.04/217.47 805.04/217.47 [colorof(node, Cons(CN(cl, N(name, adjs)), xs))] = [7] node + [0] 805.04/217.47 >= [7] node + [0] 805.04/217.47 = [colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.47 node, 805.04/217.47 Cons(CN(cl, N(name, adjs)), xs))] 805.04/217.47 805.04/217.47 [colorof(node, Nil())] = [7] node + [0] 805.04/217.47 >= [0] 805.04/217.47 = [NoColor()] 805.04/217.47 805.04/217.47 [colorof[Ite][True][Ite](True(), = [7] node + [0] 805.04/217.47 node, 805.04/217.47 Cons(CN(Cons(x, xs), n), xs'))] 805.04/217.47 ? [1] x + [0] 805.04/217.47 = [x] 805.04/217.47 805.04/217.47 [colorof[Ite][True][Ite](False(), node, Cons(x, xs))] = [7] node + [0] 805.04/217.47 >= [7] node + [0] 805.04/217.47 = [colorof(node, xs)] 805.04/217.47 805.04/217.47 [and(True(), True())] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [True()] 805.04/217.47 805.04/217.47 [and(True(), False())] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [False()] 805.04/217.47 805.04/217.47 [and(False(), True())] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [False()] 805.04/217.47 805.04/217.47 [and(False(), False())] = [0] 805.04/217.47 >= [0] 805.04/217.47 = [False()] 805.04/217.47 805.04/217.47 [colorrest^#(cs, ncs, colorednodes, Cons(x, xs))] = [1] cs + [0] 805.04/217.47 >= [0] 805.04/217.47 = [c_1()] 805.04/217.47 805.04/217.47 [graphcolour^#(Cons(x, xs), cs)] = [7] cs + [7] 805.04/217.47 > [1] cs + [3] 805.04/217.47 = [c_2(colorrest^#(cs, 805.04/217.47 cs, 805.04/217.47 Cons(colornode(cs, x, Nil()), Nil()), 805.04/217.47 xs))] 805.04/217.47 805.04/217.47 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [7] cs + [1] 805.04/217.47 >= [7] cs + [1] 805.04/217.47 = [c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest))] 805.04/217.47 805.04/217.47 [colorrestthetrick[Ite]^#(True(), = [7] cs + [1] 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest)] 805.04/217.47 > [4] cs + [0] 805.04/217.47 = [c_4(colorrest^#(cs, cs1, colorednodes, rest))] 805.04/217.47 805.04/217.47 [colorrestthetrick[Ite]^#(False(), = [7] cs + [1] 805.04/217.47 Cons(x, xs), 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest)] 805.04/217.47 >= [7] cs + [1] 805.04/217.47 = [c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 805.04/217.47 805.04/217.47 805.04/217.47 We return to the main proof. Consider the set of all dependency 805.04/217.47 pairs 805.04/217.47 805.04/217.47 : 805.04/217.47 { 1: colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.47 , 2: graphcolour^#(Cons(x, xs), cs) -> 805.04/217.47 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.47 , 3: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.47 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest)) 805.04/217.47 , 4: colorrestthetrick[Ite]^#(True(), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.47 , 5: colorrestthetrick[Ite]^#(False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.47 805.04/217.47 Processor 'matrix interpretation of dimension 1' induces the 805.04/217.47 complexity certificate YES(?,O(1)) on application of dependency 805.04/217.47 pairs {2,4}. These cover all (indirect) predecessors of dependency 805.04/217.47 pairs {1,2,4}, their number of application is equally bounded. The 805.04/217.47 dependency pairs are shifted into the weak component. 805.04/217.47 805.04/217.47 We are left with following problem, upon which TcT provides the 805.04/217.47 certificate YES(O(1),O(1)). 805.04/217.47 805.04/217.47 Weak DPs: 805.04/217.47 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.47 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.47 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.47 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.47 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest)) 805.04/217.47 , colorrestthetrick[Ite]^#(True(), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.47 , colorrestthetrick[Ite]^#(False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.47 Weak Trs: 805.04/217.47 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.47 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes) 805.04/217.47 , possible(color, Nil(), colorednodes) -> True() 805.04/217.47 , eqColor(NoColor(), b) -> False() 805.04/217.47 , eqColor(Blue(), NoColor()) -> False() 805.04/217.47 , eqColor(Blue(), Blue()) -> True() 805.04/217.47 , eqColor(Blue(), Red()) -> False() 805.04/217.47 , eqColor(Blue(), Yellow()) -> False() 805.04/217.47 , eqColor(Red(), NoColor()) -> False() 805.04/217.47 , eqColor(Red(), Blue()) -> False() 805.04/217.47 , eqColor(Red(), Red()) -> True() 805.04/217.47 , eqColor(Red(), Yellow()) -> False() 805.04/217.47 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.47 , eqColor(Yellow(), Blue()) -> False() 805.04/217.47 , eqColor(Yellow(), Red()) -> False() 805.04/217.47 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.47 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.47 CN(cs, node) 805.04/217.47 , colornode[Ite][True][Ite](False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 node, 805.04/217.47 colorednodes) 805.04/217.47 -> colornode(xs, node, colorednodes) 805.04/217.47 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.47 , !EQ(S(x), 0()) -> False() 805.04/217.47 , !EQ(0(), S(y)) -> False() 805.04/217.47 , !EQ(0(), 0()) -> True() 805.04/217.47 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.47 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.47 Cons(x, xs), 805.04/217.47 N(n, ns), 805.04/217.47 colorednodes) 805.04/217.47 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.47 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.47 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.47 , eqColorList(Nil(), Nil()) -> True() 805.04/217.47 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.47 False() 805.04/217.47 , possible[Ite][True][Ite](False(), 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes) 805.04/217.47 -> possible(color, xs, colorednodes) 805.04/217.47 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.47 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.47 node, 805.04/217.47 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.47 , colorof(node, Nil()) -> NoColor() 805.04/217.47 , colorof[Ite][True][Ite](True(), 805.04/217.47 node, 805.04/217.47 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.47 -> x 805.04/217.47 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.47 colorof(node, xs) 805.04/217.47 , and(True(), True()) -> True() 805.04/217.47 , and(True(), False()) -> False() 805.04/217.47 , and(False(), True()) -> False() 805.04/217.47 , and(False(), False()) -> False() } 805.04/217.47 Obligation: 805.04/217.47 innermost runtime complexity 805.04/217.47 Answer: 805.04/217.47 YES(O(1),O(1)) 805.04/217.47 805.04/217.47 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.47 closed under successors. The DPs are removed. 805.04/217.47 805.04/217.47 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.47 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.47 c_2(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.47 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.47 c_3(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest)) 805.04/217.47 , colorrestthetrick[Ite]^#(True(), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_4(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.47 , colorrestthetrick[Ite]^#(False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_5(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.47 805.04/217.47 We are left with following problem, upon which TcT provides the 805.04/217.47 certificate YES(O(1),O(1)). 805.04/217.47 805.04/217.47 Weak Trs: 805.04/217.47 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.47 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes) 805.04/217.47 , possible(color, Nil(), colorednodes) -> True() 805.04/217.47 , eqColor(NoColor(), b) -> False() 805.04/217.47 , eqColor(Blue(), NoColor()) -> False() 805.04/217.47 , eqColor(Blue(), Blue()) -> True() 805.04/217.47 , eqColor(Blue(), Red()) -> False() 805.04/217.47 , eqColor(Blue(), Yellow()) -> False() 805.04/217.47 , eqColor(Red(), NoColor()) -> False() 805.04/217.47 , eqColor(Red(), Blue()) -> False() 805.04/217.47 , eqColor(Red(), Red()) -> True() 805.04/217.47 , eqColor(Red(), Yellow()) -> False() 805.04/217.47 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.47 , eqColor(Yellow(), Blue()) -> False() 805.04/217.47 , eqColor(Yellow(), Red()) -> False() 805.04/217.47 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.47 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.47 CN(cs, node) 805.04/217.47 , colornode[Ite][True][Ite](False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 node, 805.04/217.47 colorednodes) 805.04/217.47 -> colornode(xs, node, colorednodes) 805.04/217.47 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.47 , !EQ(S(x), 0()) -> False() 805.04/217.47 , !EQ(0(), S(y)) -> False() 805.04/217.47 , !EQ(0(), 0()) -> True() 805.04/217.47 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.47 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.47 Cons(x, xs), 805.04/217.47 N(n, ns), 805.04/217.47 colorednodes) 805.04/217.47 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.47 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.47 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 and(False(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 and(True(), eqColorList(cs1, cs2)) 805.04/217.47 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.47 , eqColorList(Nil(), Nil()) -> True() 805.04/217.47 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.47 False() 805.04/217.47 , possible[Ite][True][Ite](False(), 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes) 805.04/217.47 -> possible(color, xs, colorednodes) 805.04/217.47 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.47 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.47 node, 805.04/217.47 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.47 , colorof(node, Nil()) -> NoColor() 805.04/217.47 , colorof[Ite][True][Ite](True(), 805.04/217.47 node, 805.04/217.47 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.47 -> x 805.04/217.47 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.47 colorof(node, xs) 805.04/217.47 , and(True(), True()) -> True() 805.04/217.47 , and(True(), False()) -> False() 805.04/217.47 , and(False(), True()) -> False() 805.04/217.47 , and(False(), False()) -> False() } 805.04/217.47 Obligation: 805.04/217.47 innermost runtime complexity 805.04/217.47 Answer: 805.04/217.47 YES(O(1),O(1)) 805.04/217.47 805.04/217.47 No rule is usable, rules are removed from the input problem. 805.04/217.47 805.04/217.47 We are left with following problem, upon which TcT provides the 805.04/217.47 certificate YES(O(1),O(1)). 805.04/217.47 805.04/217.47 Rules: Empty 805.04/217.47 Obligation: 805.04/217.47 innermost runtime complexity 805.04/217.47 Answer: 805.04/217.47 YES(O(1),O(1)) 805.04/217.47 805.04/217.47 Empty rules are trivially bounded 805.04/217.47 805.04/217.47 S) We are left with following problem, upon which TcT provides the 805.04/217.47 certificate YES(?,POLY). 805.04/217.47 805.04/217.47 Strict DPs: 805.04/217.47 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.47 c_3(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 c_4(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 c_5(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 c_6(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 c_7(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 c_8(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 c_9(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 c_10(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 c_11(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.47 c_12(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.47 c_13(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.47 c_14(eqColorList^#(cs1, cs2)) 805.04/217.47 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.47 c_15(eqColorList^#(cs1, cs2)) 805.04/217.47 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.47 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest), 805.04/217.47 eqColorList^#(cs1, ncs)) } 805.04/217.47 Weak DPs: 805.04/217.47 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.47 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.47 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.47 , colorrestthetrick[Ite]^#(True(), 805.04/217.47 cs1, 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) 805.04/217.47 , colorrestthetrick[Ite]^#(False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 cs, 805.04/217.47 ncs, 805.04/217.47 colorednodes, 805.04/217.47 rest) 805.04/217.47 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.47 Weak Trs: 805.04/217.47 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.47 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.47 color, 805.04/217.47 Cons(x, xs), 805.04/217.47 colorednodes) 805.04/217.47 , possible(color, Nil(), colorednodes) -> True() 805.04/217.47 , eqColor(NoColor(), b) -> False() 805.04/217.47 , eqColor(Blue(), NoColor()) -> False() 805.04/217.47 , eqColor(Blue(), Blue()) -> True() 805.04/217.47 , eqColor(Blue(), Red()) -> False() 805.04/217.47 , eqColor(Blue(), Yellow()) -> False() 805.04/217.47 , eqColor(Red(), NoColor()) -> False() 805.04/217.47 , eqColor(Red(), Blue()) -> False() 805.04/217.47 , eqColor(Red(), Red()) -> True() 805.04/217.47 , eqColor(Red(), Yellow()) -> False() 805.04/217.47 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.47 , eqColor(Yellow(), Blue()) -> False() 805.04/217.47 , eqColor(Yellow(), Red()) -> False() 805.04/217.47 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.47 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.47 CN(cs, node) 805.04/217.47 , colornode[Ite][True][Ite](False(), 805.04/217.47 Cons(x, xs), 805.04/217.47 node, 805.04/217.47 colorednodes) 805.04/217.47 -> colornode(xs, node, colorednodes) 805.04/217.47 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.47 , !EQ(S(x), 0()) -> False() 805.04/217.47 , !EQ(0(), S(y)) -> False() 805.04/217.47 , !EQ(0(), 0()) -> True() 805.04/217.47 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.47 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.47 Cons(x, xs), 805.04/217.47 N(n, ns), 805.04/217.47 colorednodes) 805.04/217.47 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.48 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.48 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.48 , eqColorList(Nil(), Nil()) -> True() 805.04/217.48 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.48 False() 805.04/217.48 , possible[Ite][True][Ite](False(), 805.04/217.48 color, 805.04/217.48 Cons(x, xs), 805.04/217.48 colorednodes) 805.04/217.48 -> possible(color, xs, colorednodes) 805.04/217.48 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.48 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.48 node, 805.04/217.48 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.48 , colorof(node, Nil()) -> NoColor() 805.04/217.48 , colorof[Ite][True][Ite](True(), 805.04/217.48 node, 805.04/217.48 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.48 -> x 805.04/217.48 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.48 colorof(node, xs) 805.04/217.48 , and(True(), True()) -> True() 805.04/217.48 , and(True(), False()) -> False() 805.04/217.48 , and(False(), True()) -> False() 805.04/217.48 , and(False(), False()) -> False() } 805.04/217.48 Obligation: 805.04/217.48 innermost runtime complexity 805.04/217.48 Answer: 805.04/217.48 YES(?,POLY) 805.04/217.48 805.04/217.48 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.48 closed under successors. The DPs are removed. 805.04/217.48 805.04/217.48 { colorrest^#(cs, ncs, colorednodes, Cons(x, xs)) -> c_1() 805.04/217.48 , graphcolour^#(Cons(x, xs), cs) -> 805.04/217.48 c_17(colorrest^#(cs, cs, Cons(colornode(cs, x, Nil()), Nil()), xs)) 805.04/217.48 , colorrestthetrick[Ite]^#(True(), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_18(colorrest^#(cs, cs1, colorednodes, rest)) } 805.04/217.48 805.04/217.48 We are left with following problem, upon which TcT provides the 805.04/217.48 certificate YES(?,POLY). 805.04/217.48 805.04/217.48 Strict DPs: 805.04/217.48 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 c_3(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_4(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_5(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_6(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_7(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_8(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_9(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_10(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_11(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_12(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_13(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_14(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_15(eqColorList^#(cs1, cs2)) 805.04/217.48 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest), 805.04/217.48 eqColorList^#(cs1, ncs)) } 805.04/217.48 Weak DPs: 805.04/217.48 { colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.48 Weak Trs: 805.04/217.48 { possible(color, Cons(x, xs), colorednodes) -> 805.04/217.48 possible[Ite][True][Ite](eqColor(color, colorof(x, colorednodes)), 805.04/217.48 color, 805.04/217.48 Cons(x, xs), 805.04/217.48 colorednodes) 805.04/217.48 , possible(color, Nil(), colorednodes) -> True() 805.04/217.48 , eqColor(NoColor(), b) -> False() 805.04/217.48 , eqColor(Blue(), NoColor()) -> False() 805.04/217.48 , eqColor(Blue(), Blue()) -> True() 805.04/217.48 , eqColor(Blue(), Red()) -> False() 805.04/217.48 , eqColor(Blue(), Yellow()) -> False() 805.04/217.48 , eqColor(Red(), NoColor()) -> False() 805.04/217.48 , eqColor(Red(), Blue()) -> False() 805.04/217.48 , eqColor(Red(), Red()) -> True() 805.04/217.48 , eqColor(Red(), Yellow()) -> False() 805.04/217.48 , eqColor(Yellow(), NoColor()) -> False() 805.04/217.48 , eqColor(Yellow(), Blue()) -> False() 805.04/217.48 , eqColor(Yellow(), Red()) -> False() 805.04/217.48 , eqColor(Yellow(), Yellow()) -> True() 805.04/217.48 , colornode[Ite][True][Ite](True(), cs, node, colorednodes) -> 805.04/217.48 CN(cs, node) 805.04/217.48 , colornode[Ite][True][Ite](False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 node, 805.04/217.48 colorednodes) 805.04/217.48 -> colornode(xs, node, colorednodes) 805.04/217.48 , !EQ(S(x), S(y)) -> !EQ(x, y) 805.04/217.48 , !EQ(S(x), 0()) -> False() 805.04/217.48 , !EQ(0(), S(y)) -> False() 805.04/217.48 , !EQ(0(), 0()) -> True() 805.04/217.48 , colornode(Cons(x, xs), N(n, ns), colorednodes) -> 805.04/217.48 colornode[Ite][True][Ite](possible(x, ns, colorednodes), 805.04/217.48 Cons(x, xs), 805.04/217.48 N(n, ns), 805.04/217.48 colorednodes) 805.04/217.48 , colornode(Nil(), node, colorednodes) -> NotPossible() 805.04/217.48 , eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.48 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.48 , eqColorList(Nil(), Nil()) -> True() 805.04/217.48 , possible[Ite][True][Ite](True(), color, adjs, colorednodes) -> 805.04/217.48 False() 805.04/217.48 , possible[Ite][True][Ite](False(), 805.04/217.48 color, 805.04/217.48 Cons(x, xs), 805.04/217.48 colorednodes) 805.04/217.48 -> possible(color, xs, colorednodes) 805.04/217.48 , colorof(node, Cons(CN(cl, N(name, adjs)), xs)) -> 805.04/217.48 colorof[Ite][True][Ite](!EQ(name, node), 805.04/217.48 node, 805.04/217.48 Cons(CN(cl, N(name, adjs)), xs)) 805.04/217.48 , colorof(node, Nil()) -> NoColor() 805.04/217.48 , colorof[Ite][True][Ite](True(), 805.04/217.48 node, 805.04/217.48 Cons(CN(Cons(x, xs), n), xs')) 805.04/217.48 -> x 805.04/217.48 , colorof[Ite][True][Ite](False(), node, Cons(x, xs)) -> 805.04/217.48 colorof(node, xs) 805.04/217.48 , and(True(), True()) -> True() 805.04/217.48 , and(True(), False()) -> False() 805.04/217.48 , and(False(), True()) -> False() 805.04/217.48 , and(False(), False()) -> False() } 805.04/217.48 Obligation: 805.04/217.48 innermost runtime complexity 805.04/217.48 Answer: 805.04/217.48 YES(?,POLY) 805.04/217.48 805.04/217.48 We replace rewrite rules by usable rules: 805.04/217.48 805.04/217.48 Weak Usable Rules: 805.04/217.48 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.48 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.48 , eqColorList(Nil(), Nil()) -> True() 805.04/217.48 , and(True(), True()) -> True() 805.04/217.48 , and(True(), False()) -> False() 805.04/217.48 , and(False(), True()) -> False() 805.04/217.48 , and(False(), False()) -> False() } 805.04/217.48 805.04/217.48 We are left with following problem, upon which TcT provides the 805.04/217.48 certificate YES(?,POLY). 805.04/217.48 805.04/217.48 Strict DPs: 805.04/217.48 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 c_3(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_4(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_5(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_6(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_7(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_8(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_9(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_10(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_11(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_12(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_13(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_14(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_15(eqColorList^#(cs1, cs2)) 805.04/217.48 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest), 805.04/217.48 eqColorList^#(cs1, ncs)) } 805.04/217.48 Weak DPs: 805.04/217.48 { colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.48 Weak Trs: 805.04/217.48 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.48 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.48 , eqColorList(Nil(), Nil()) -> True() 805.04/217.48 , and(True(), True()) -> True() 805.04/217.48 , and(True(), False()) -> False() 805.04/217.48 , and(False(), True()) -> False() 805.04/217.48 , and(False(), False()) -> False() } 805.04/217.48 Obligation: 805.04/217.48 innermost runtime complexity 805.04/217.48 Answer: 805.04/217.48 YES(?,POLY) 805.04/217.48 805.04/217.48 We decompose the input problem according to the dependency graph 805.04/217.48 into the upper component 805.04/217.48 805.04/217.48 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest), 805.04/217.48 eqColorList^#(cs1, ncs)) 805.04/217.48 , colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.48 805.04/217.48 and lower component 805.04/217.48 805.04/217.48 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 c_3(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_4(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_5(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_6(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_7(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_8(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_9(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_10(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_11(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 c_12(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 c_13(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 c_14(eqColorList^#(cs1, cs2)) 805.04/217.48 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 c_15(eqColorList^#(cs1, cs2)) } 805.04/217.48 805.04/217.48 Further, following extension rules are added to the lower 805.04/217.48 component. 805.04/217.48 805.04/217.48 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 eqColorList^#(cs1, ncs) 805.04/217.48 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 , colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 805.04/217.48 805.04/217.48 TcT solves the upper component with certificate YES(O(1),O(n^1)). 805.04/217.48 805.04/217.48 Sub-proof: 805.04/217.48 ---------- 805.04/217.48 We are left with following problem, upon which TcT provides the 805.04/217.48 certificate YES(O(1),O(n^1)). 805.04/217.48 805.04/217.48 Strict DPs: 805.04/217.48 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest), 805.04/217.48 eqColorList^#(cs1, ncs)) } 805.04/217.48 Weak DPs: 805.04/217.48 { colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.48 Weak Trs: 805.04/217.48 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.48 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.48 and(False(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.48 and(True(), eqColorList(cs1, cs2)) 805.04/217.48 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.48 , eqColorList(Nil(), Nil()) -> True() 805.04/217.48 , and(True(), True()) -> True() 805.04/217.48 , and(True(), False()) -> False() 805.04/217.48 , and(False(), True()) -> False() 805.04/217.48 , and(False(), False()) -> False() } 805.04/217.48 Obligation: 805.04/217.48 innermost runtime complexity 805.04/217.48 Answer: 805.04/217.48 YES(O(1),O(n^1)) 805.04/217.48 805.04/217.48 We use the processor 'matrix interpretation of dimension 1' to 805.04/217.48 orient following rules strictly. 805.04/217.48 805.04/217.48 DPs: 805.04/217.48 { 1: colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.48 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.48 cs1, 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest), 805.04/217.48 eqColorList^#(cs1, ncs)) 805.04/217.48 , 2: colorrestthetrick[Ite]^#(False(), 805.04/217.48 Cons(x, xs), 805.04/217.48 cs, 805.04/217.48 ncs, 805.04/217.48 colorednodes, 805.04/217.48 rest) 805.04/217.48 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.48 805.04/217.48 Sub-proof: 805.04/217.48 ---------- 805.04/217.48 The following argument positions are usable: 805.04/217.48 Uargs(c_16) = {1}, Uargs(c_19) = {1} 805.04/217.48 805.04/217.48 TcT has computed the following constructor-based matrix 805.04/217.48 interpretation satisfying not(EDA). 805.04/217.48 805.04/217.48 [True] = [0] 805.04/217.48 805.04/217.48 [NoColor] = [0] 805.04/217.48 805.04/217.48 [Blue] = [0] 805.04/217.48 805.04/217.48 [Cons](x1, x2) = [1] x2 + [2] 805.04/217.48 805.04/217.48 [eqColorList](x1, x2) = [0] 805.04/217.48 805.04/217.48 [False] = [0] 805.04/217.48 805.04/217.48 [Red] = [0] 805.04/217.48 805.04/217.48 [Nil] = [0] 805.04/217.48 805.04/217.48 [and](x1, x2) = [0] 805.04/217.48 805.04/217.48 [Yellow] = [0] 805.04/217.48 805.04/217.48 [eqColorList^#](x1, x2) = [7] x1 + [7] x2 + [7] 805.04/217.48 805.04/217.48 [colorrestthetrick^#](x1, x2, x3, x4, x5) = [4] x1 + [7] x2 + [7] x4 + [7] x5 + [2] 805.04/217.48 805.04/217.48 [colorrestthetrick[Ite]^#](x1, x2, x3, x4, x5, x6) = [4] x2 + [7] x3 + [7] x5 + [7] x6 + [0] 805.04/217.48 805.04/217.48 [c_16](x1, x2) = [1] x1 + [1] 805.04/217.48 805.04/217.48 [c_19](x1) = [1] x1 + [1] 805.04/217.48 805.04/217.48 The order satisfies the following ordering constraints: 805.04/217.48 805.04/217.48 [eqColorList(Cons(c1, cs1), Nil())] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [False()] 805.04/217.48 805.04/217.48 [eqColorList(Cons(NoColor(), cs1), Cons(b, cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Red(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(False(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [and(True(), eqColorList(cs1, cs2))] 805.04/217.48 805.04/217.48 [eqColorList(Nil(), Cons(c2, cs2))] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [False()] 805.04/217.48 805.04/217.48 [eqColorList(Nil(), Nil())] = [0] 805.04/217.48 >= [0] 805.04/217.48 = [True()] 805.04/217.48 805.04/217.48 [and(True(), True())] = [0] 805.04/217.48 >= [0] 805.04/217.49 = [True()] 805.04/217.49 805.04/217.49 [and(True(), False())] = [0] 805.04/217.49 >= [0] 805.04/217.49 = [False()] 805.04/217.49 805.04/217.49 [and(False(), True())] = [0] 805.04/217.49 >= [0] 805.04/217.49 = [False()] 805.04/217.49 805.04/217.49 [and(False(), False())] = [0] 805.04/217.49 >= [0] 805.04/217.49 = [False()] 805.04/217.49 805.04/217.49 [colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)] = [4] cs1 + [7] rest + [7] colorednodes + [7] cs + [2] 805.04/217.49 > [4] cs1 + [7] rest + [7] colorednodes + [7] cs + [1] 805.04/217.49 = [c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.49 cs1, 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest), 805.04/217.49 eqColorList^#(cs1, ncs))] 805.04/217.49 805.04/217.49 [colorrestthetrick[Ite]^#(False(), = [4] xs + [7] rest + [7] colorednodes + [7] cs + [8] 805.04/217.49 Cons(x, xs), 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest)] 805.04/217.49 > [4] xs + [7] rest + [7] colorednodes + [7] cs + [3] 805.04/217.49 = [c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest))] 805.04/217.49 805.04/217.49 805.04/217.49 The strictly oriented rules are moved into the weak component. 805.04/217.49 805.04/217.49 We are left with following problem, upon which TcT provides the 805.04/217.49 certificate YES(O(1),O(1)). 805.04/217.49 805.04/217.49 Weak DPs: 805.04/217.49 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.49 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.49 cs1, 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest), 805.04/217.49 eqColorList^#(cs1, ncs)) 805.04/217.49 , colorrestthetrick[Ite]^#(False(), 805.04/217.49 Cons(x, xs), 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest) 805.04/217.49 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.49 Weak Trs: 805.04/217.49 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.49 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.49 , eqColorList(Nil(), Nil()) -> True() 805.04/217.49 , and(True(), True()) -> True() 805.04/217.49 , and(True(), False()) -> False() 805.04/217.49 , and(False(), True()) -> False() 805.04/217.49 , and(False(), False()) -> False() } 805.04/217.49 Obligation: 805.04/217.49 innermost runtime complexity 805.04/217.49 Answer: 805.04/217.49 YES(O(1),O(1)) 805.04/217.49 805.04/217.49 The following weak DPs constitute a sub-graph of the DG that is 805.04/217.49 closed under successors. The DPs are removed. 805.04/217.49 805.04/217.49 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.49 c_16(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.49 cs1, 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest), 805.04/217.49 eqColorList^#(cs1, ncs)) 805.04/217.49 , colorrestthetrick[Ite]^#(False(), 805.04/217.49 Cons(x, xs), 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest) 805.04/217.49 -> c_19(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) } 805.04/217.49 805.04/217.49 We are left with following problem, upon which TcT provides the 805.04/217.49 certificate YES(O(1),O(1)). 805.04/217.49 805.04/217.49 Weak Trs: 805.04/217.49 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.49 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.49 , eqColorList(Nil(), Nil()) -> True() 805.04/217.49 , and(True(), True()) -> True() 805.04/217.49 , and(True(), False()) -> False() 805.04/217.49 , and(False(), True()) -> False() 805.04/217.49 , and(False(), False()) -> False() } 805.04/217.49 Obligation: 805.04/217.49 innermost runtime complexity 805.04/217.49 Answer: 805.04/217.49 YES(O(1),O(1)) 805.04/217.49 805.04/217.49 No rule is usable, rules are removed from the input problem. 805.04/217.49 805.04/217.49 We are left with following problem, upon which TcT provides the 805.04/217.49 certificate YES(O(1),O(1)). 805.04/217.49 805.04/217.49 Rules: Empty 805.04/217.49 Obligation: 805.04/217.49 innermost runtime complexity 805.04/217.49 Answer: 805.04/217.49 YES(O(1),O(1)) 805.04/217.49 805.04/217.49 Empty rules are trivially bounded 805.04/217.49 805.04/217.49 We return to the main proof. 805.04/217.49 805.04/217.49 We are left with following problem, upon which TcT provides the 805.04/217.49 certificate YES(?,POLY). 805.04/217.49 805.04/217.49 Strict DPs: 805.04/217.49 { eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.49 c_3(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 c_4(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 c_5(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 c_6(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 c_7(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 c_8(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 c_9(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 c_10(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 c_11(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 c_12(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 c_13(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 c_14(eqColorList^#(cs1, cs2)) 805.04/217.49 , eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 c_15(eqColorList^#(cs1, cs2)) } 805.04/217.49 Weak DPs: 805.04/217.49 { colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.49 eqColorList^#(cs1, ncs) 805.04/217.49 , colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest) -> 805.04/217.49 colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.49 cs1, 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest) 805.04/217.49 , colorrestthetrick[Ite]^#(False(), 805.04/217.49 Cons(x, xs), 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest) 805.04/217.49 -> colorrestthetrick^#(xs, cs, ncs, colorednodes, rest) } 805.04/217.49 Weak Trs: 805.04/217.49 { eqColorList(Cons(c1, cs1), Nil()) -> False() 805.04/217.49 , eqColorList(Cons(NoColor(), cs1), Cons(b, cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Blue(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Red(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(NoColor(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Blue(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Red(), cs2)) -> 805.04/217.49 and(False(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Cons(Yellow(), cs1), Cons(Yellow(), cs2)) -> 805.04/217.49 and(True(), eqColorList(cs1, cs2)) 805.04/217.49 , eqColorList(Nil(), Cons(c2, cs2)) -> False() 805.04/217.49 , eqColorList(Nil(), Nil()) -> True() 805.04/217.49 , and(True(), True()) -> True() 805.04/217.49 , and(True(), False()) -> False() 805.04/217.49 , and(False(), True()) -> False() 805.04/217.49 , and(False(), False()) -> False() } 805.04/217.49 Obligation: 805.04/217.49 innermost runtime complexity 805.04/217.49 Answer: 805.04/217.49 YES(?,POLY) 805.04/217.49 805.04/217.49 The input was oriented with the instance of 'Polynomial Path Order 805.04/217.49 (PS)' as induced by the safe mapping 805.04/217.49 805.04/217.49 safe(True) = {}, safe(NoColor) = {}, safe(Blue) = {}, 805.04/217.49 safe(Cons) = {1, 2}, safe(eqColorList) = {}, safe(False) = {}, 805.04/217.49 safe(Red) = {}, safe(Nil) = {}, safe(and) = {}, safe(Yellow) = {}, 805.04/217.49 safe(eqColorList^#) = {}, safe(colorrestthetrick^#) = {}, 805.04/217.49 safe(colorrestthetrick[Ite]^#) = {}, safe(c_3) = {}, 805.04/217.49 safe(c_4) = {}, safe(c_5) = {}, safe(c_6) = {}, safe(c_7) = {}, 805.04/217.49 safe(c_8) = {}, safe(c_9) = {}, safe(c_10) = {}, safe(c_11) = {}, 805.04/217.49 safe(c_12) = {}, safe(c_13) = {}, safe(c_14) = {}, safe(c_15) = {} 805.04/217.49 805.04/217.49 and precedence 805.04/217.49 805.04/217.49 eqColorList > and, eqColorList^# > and, colorrestthetrick^# > and, 805.04/217.49 colorrestthetrick[Ite]^# > and, eqColorList ~ eqColorList^#, 805.04/217.49 eqColorList ~ colorrestthetrick^#, 805.04/217.49 eqColorList ~ colorrestthetrick[Ite]^#, 805.04/217.49 eqColorList^# ~ colorrestthetrick^#, 805.04/217.49 eqColorList^# ~ colorrestthetrick[Ite]^#, 805.04/217.49 colorrestthetrick^# ~ colorrestthetrick[Ite]^# . 805.04/217.49 805.04/217.49 Following symbols are considered recursive: 805.04/217.49 805.04/217.49 {eqColorList^#, colorrestthetrick^#, colorrestthetrick[Ite]^#} 805.04/217.49 805.04/217.49 The recursion depth is 1. 805.04/217.49 805.04/217.49 Further, following argument filtering is employed: 805.04/217.49 805.04/217.49 pi(True) = [], pi(NoColor) = [], pi(Blue) = [], pi(Cons) = [2], 805.04/217.49 pi(eqColorList) = [], pi(False) = [], pi(Red) = [], pi(Nil) = [], 805.04/217.49 pi(and) = [1, 2], pi(Yellow) = [], pi(eqColorList^#) = [1], 805.04/217.49 pi(colorrestthetrick^#) = [1], pi(colorrestthetrick[Ite]^#) = [2], 805.04/217.49 pi(c_3) = [1], pi(c_4) = [1], pi(c_5) = [1], pi(c_6) = [1], 805.04/217.49 pi(c_7) = [1], pi(c_8) = [1], pi(c_9) = [1], pi(c_10) = [1], 805.04/217.49 pi(c_11) = [1], pi(c_12) = [1], pi(c_13) = [1], pi(c_14) = [1], 805.04/217.49 pi(c_15) = [1] 805.04/217.49 805.04/217.49 Usable defined function symbols are a subset of: 805.04/217.49 805.04/217.49 {and, eqColorList^#, colorrestthetrick^#, colorrestthetrick[Ite]^#} 805.04/217.49 805.04/217.49 For your convenience, here are the satisfied ordering constraints: 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(NoColor(), cs1), Cons(b, cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_3(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_3(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Blue(), cs1), Cons(NoColor(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_4(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_4(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Blue(), cs1), Cons(Blue(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_5(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_5(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Blue(), cs1), Cons(Red(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_6(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_6(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Blue(), cs1), Cons(Yellow(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_7(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_7(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Red(), cs1), Cons(NoColor(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_8(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_8(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Red(), cs1), Cons(Blue(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_9(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_9(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Red(), cs1), Cons(Red(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_10(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_10(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Red(), cs1), Cons(Yellow(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_11(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_11(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Yellow(), cs1), Cons(NoColor(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_12(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_12(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Yellow(), cs1), Cons(Blue(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_13(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_13(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Yellow(), cs1), Cons(Red(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_14(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_14(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(eqColorList^#(Cons(Yellow(), cs1), Cons(Yellow(), cs2))) = eqColorList^#(Cons(; cs1);) 805.04/217.49 > c_15(eqColorList^#(cs1;);) 805.04/217.49 = pi(c_15(eqColorList^#(cs1, cs2))) 805.04/217.49 805.04/217.49 pi(colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)) = colorrestthetrick^#(cs1;) 805.04/217.49 >= eqColorList^#(cs1;) 805.04/217.49 = pi(eqColorList^#(cs1, ncs)) 805.04/217.49 805.04/217.49 pi(colorrestthetrick^#(cs1, cs, ncs, colorednodes, rest)) = colorrestthetrick^#(cs1;) 805.04/217.49 >= colorrestthetrick[Ite]^#(cs1;) 805.04/217.49 = pi(colorrestthetrick[Ite]^#(eqColorList(cs1, ncs), 805.04/217.49 cs1, 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest)) 805.04/217.49 805.04/217.49 pi(colorrestthetrick[Ite]^#(False(), = colorrestthetrick[Ite]^#(Cons(; xs);) 805.04/217.49 Cons(x, xs), 805.04/217.49 cs, 805.04/217.49 ncs, 805.04/217.49 colorednodes, 805.04/217.49 rest)) 805.04/217.49 > colorrestthetrick^#(xs;) 805.04/217.49 = pi(colorrestthetrick^#(xs, cs, ncs, colorednodes, rest)) 805.04/217.49 805.04/217.49 pi(and(True(), True())) = and(True(), True();) 805.04/217.49 > True() 805.04/217.49 = pi(True()) 805.04/217.49 805.04/217.49 pi(and(True(), False())) = and(True(), False();) 805.04/217.49 > False() 805.04/217.49 = pi(False()) 805.04/217.49 805.04/217.49 pi(and(False(), True())) = and(False(), True();) 805.04/217.49 > False() 805.04/217.49 = pi(False()) 805.04/217.49 805.04/217.49 pi(and(False(), False())) = and(False(), False();) 805.04/217.49 > False() 805.04/217.49 = pi(False()) 805.04/217.49 805.04/217.49 805.04/217.49 805.04/217.49 805.04/217.49 805.04/217.49 805.04/217.49 805.04/217.49 Hurray, we answered YES(O(1),POLY) 805.04/217.49 EOF