1.25/1.25 YES 1.25/1.25 1.25/1.25 Problem 1: 1.25/1.25 1.25/1.25 (VAR IL L M N V V1 V2) 1.25/1.25 (STRATEGY CONTEXTSENSITIVE 1.25/1.25 (U101 1) 1.25/1.25 (U102 1) 1.25/1.25 (U103 1) 1.25/1.25 (U104 1) 1.25/1.25 (U105 1) 1.25/1.25 (U106 1) 1.25/1.25 (U11 1) 1.25/1.25 (U111 1) 1.25/1.25 (U112 1) 1.25/1.25 (U113 1) 1.25/1.25 (U114 1) 1.25/1.25 (U12 1) 1.25/1.25 (U121 1) 1.25/1.25 (U122 1) 1.25/1.25 (U13 1) 1.25/1.25 (U131 1) 1.25/1.25 (U132 1) 1.25/1.25 (U133 1) 1.25/1.25 (U134 1) 1.25/1.25 (U135 1) 1.25/1.25 (U136 1) 1.25/1.25 (U21 1) 1.25/1.25 (U22 1) 1.25/1.25 (U23 1) 1.25/1.25 (U31 1) 1.25/1.25 (U32 1) 1.25/1.25 (U33 1) 1.25/1.25 (U41 1) 1.25/1.25 (U42 1) 1.25/1.25 (U43 1) 1.25/1.25 (U44 1) 1.25/1.25 (U45 1) 1.25/1.25 (U46 1) 1.25/1.25 (U51 1) 1.25/1.25 (U52 1) 1.25/1.25 (U61 1) 1.25/1.25 (U62 1) 1.25/1.25 (U71 1) 1.25/1.25 (U81 1) 1.25/1.25 (U91 1) 1.25/1.25 (U92 1) 1.25/1.25 (U93 1) 1.25/1.25 (U94 1) 1.25/1.25 (U95 1) 1.25/1.25 (U96 1) 1.25/1.25 (isNat) 1.25/1.25 (isNatIList) 1.25/1.25 (isNatIListKind) 1.25/1.25 (isNatKind) 1.25/1.25 (isNatList) 1.25/1.25 (length 1) 1.25/1.25 (take 1 2) 1.25/1.25 (zeros) 1.25/1.25 (0) 1.25/1.25 (cons 1) 1.25/1.25 (nil) 1.25/1.25 (s 1) 1.25/1.25 (tt) 1.25/1.25 ) 1.25/1.25 (RULES 1.25/1.25 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.25 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.25 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.25 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.25 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.25 U106(tt) -> tt 1.25/1.25 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.25 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.25 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.25 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.25 U114(tt,L) -> s(length(L)) 1.25/1.25 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.25 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.25 U122(tt) -> nil 1.25/1.25 U13(tt) -> tt 1.25/1.25 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.25 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.25 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.25 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.25 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.25 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.25 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.25 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.25 U23(tt) -> tt 1.25/1.25 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.25 U32(tt,V) -> U33(isNatList(V)) 1.25/1.25 U33(tt) -> tt 1.25/1.25 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.25 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.25 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.25 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.25 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.25 U46(tt) -> tt 1.25/1.25 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.25 U52(tt) -> tt 1.25/1.25 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.25 U62(tt) -> tt 1.25/1.25 U71(tt) -> tt 1.25/1.25 U81(tt) -> tt 1.25/1.25 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.25 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.25 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.25 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.25 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.25 U96(tt) -> tt 1.25/1.25 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.25 isNat(0) -> tt 1.25/1.25 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.25 isNatIList(zeros) -> tt 1.25/1.25 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.25 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.25 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(zeros) -> tt 1.25/1.25 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(nil) -> tt 1.25/1.25 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.25 isNatKind(0) -> tt 1.25/1.25 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.25 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(nil) -> tt 1.25/1.25 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.25 length(nil) -> 0 1.25/1.25 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.25 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.25 zeros -> cons(0,zeros) 1.25/1.25 ) 1.25/1.25 1.25/1.25 Problem 1: 1.25/1.25 1.25/1.25 Dependency Pairs Processor: 1.25/1.25 -> Pairs: 1.25/1.25 U101#(tt,V1,V2) -> U102#(isNatKind(V1),V1,V2) 1.25/1.25 U101#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U102#(tt,V1,V2) -> U103#(isNatIListKind(V2),V1,V2) 1.25/1.25 U102#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U103#(tt,V1,V2) -> U104#(isNatIListKind(V2),V1,V2) 1.25/1.25 U103#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U104#(tt,V1,V2) -> U105#(isNat(V1),V2) 1.25/1.25 U104#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U105#(tt,V2) -> U106#(isNatIList(V2)) 1.25/1.25 U105#(tt,V2) -> ISNATILIST(V2) 1.25/1.25 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.25 U11#(tt,V1) -> ISNATILISTKIND(V1) 1.25/1.25 U111#(tt,L,N) -> U112#(isNatIListKind(L),L,N) 1.25/1.25 U111#(tt,L,N) -> ISNATILISTKIND(L) 1.25/1.25 U112#(tt,L,N) -> U113#(isNat(N),L,N) 1.25/1.25 U112#(tt,L,N) -> ISNAT(N) 1.25/1.25 U113#(tt,L,N) -> U114#(isNatKind(N),L) 1.25/1.25 U113#(tt,L,N) -> ISNATKIND(N) 1.25/1.25 U114#(tt,L) -> LENGTH(L) 1.25/1.25 U114#(tt,L) -> L 1.25/1.25 U12#(tt,V1) -> U13#(isNatList(V1)) 1.25/1.25 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.25 U121#(tt,IL) -> U122#(isNatIListKind(IL)) 1.25/1.25 U121#(tt,IL) -> ISNATILISTKIND(IL) 1.25/1.25 U131#(tt,IL,M,N) -> U132#(isNatIListKind(IL),IL,M,N) 1.25/1.25 U131#(tt,IL,M,N) -> ISNATILISTKIND(IL) 1.25/1.25 U132#(tt,IL,M,N) -> U133#(isNat(M),IL,M,N) 1.25/1.25 U132#(tt,IL,M,N) -> ISNAT(M) 1.25/1.25 U133#(tt,IL,M,N) -> U134#(isNatKind(M),IL,M,N) 1.25/1.25 U133#(tt,IL,M,N) -> ISNATKIND(M) 1.25/1.25 U134#(tt,IL,M,N) -> U135#(isNat(N),IL,M,N) 1.25/1.25 U134#(tt,IL,M,N) -> ISNAT(N) 1.25/1.25 U135#(tt,IL,M,N) -> U136#(isNatKind(N),IL,M,N) 1.25/1.25 U135#(tt,IL,M,N) -> ISNATKIND(N) 1.25/1.25 U136#(tt,IL,M,N) -> N 1.25/1.25 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.25 U21#(tt,V1) -> ISNATKIND(V1) 1.25/1.25 U22#(tt,V1) -> U23#(isNat(V1)) 1.25/1.25 U22#(tt,V1) -> ISNAT(V1) 1.25/1.25 U31#(tt,V) -> U32#(isNatIListKind(V),V) 1.25/1.25 U31#(tt,V) -> ISNATILISTKIND(V) 1.25/1.25 U32#(tt,V) -> U33#(isNatList(V)) 1.25/1.25 U32#(tt,V) -> ISNATLIST(V) 1.25/1.25 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.25 U41#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.25 U42#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.25 U43#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.25 U44#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U45#(tt,V2) -> U46#(isNatIList(V2)) 1.25/1.25 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.25 U51#(tt,V2) -> U52#(isNatIListKind(V2)) 1.25/1.25 U51#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U61#(tt,V2) -> U62#(isNatIListKind(V2)) 1.25/1.25 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.25 U91#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.25 U92#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.25 U93#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.25 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U95#(tt,V2) -> U96#(isNatList(V2)) 1.25/1.25 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.25 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.25 ISNAT(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.25 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.25 ISNAT(s(V1)) -> ISNATKIND(V1) 1.25/1.25 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATILIST(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATILIST(V) -> U31#(isNatIListKind(V),V) 1.25/1.25 ISNATILIST(V) -> ISNATILISTKIND(V) 1.25/1.25 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.25 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATILISTKIND(cons(V1,V2)) -> U51#(isNatKind(V1),V2) 1.25/1.25 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATKIND(length(V1)) -> U71#(isNatIListKind(V1)) 1.25/1.25 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.25 ISNATKIND(s(V1)) -> U81#(isNatKind(V1)) 1.25/1.25 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.25 ISNATLIST(take(V1,V2)) -> U101#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATLIST(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATLIST(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 LENGTH(cons(N,L)) -> U111#(isNatList(L),L,N) 1.25/1.25 LENGTH(cons(N,L)) -> ISNATLIST(L) 1.25/1.25 TAKE(0,IL) -> U121#(isNatIList(IL),IL) 1.25/1.25 TAKE(0,IL) -> ISNATILIST(IL) 1.25/1.25 TAKE(s(M),cons(N,IL)) -> U131#(isNatIList(IL),IL,M,N) 1.25/1.25 TAKE(s(M),cons(N,IL)) -> ISNATILIST(IL) 1.25/1.25 -> Rules: 1.25/1.25 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.25 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.25 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.25 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.25 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.25 U106(tt) -> tt 1.25/1.25 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.25 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.25 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.25 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.25 U114(tt,L) -> s(length(L)) 1.25/1.25 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.25 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.25 U122(tt) -> nil 1.25/1.25 U13(tt) -> tt 1.25/1.25 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.25 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.25 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.25 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.25 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.25 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.25 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.25 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.25 U23(tt) -> tt 1.25/1.25 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.25 U32(tt,V) -> U33(isNatList(V)) 1.25/1.25 U33(tt) -> tt 1.25/1.25 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.25 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.25 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.25 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.25 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.25 U46(tt) -> tt 1.25/1.25 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.25 U52(tt) -> tt 1.25/1.25 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.25 U62(tt) -> tt 1.25/1.25 U71(tt) -> tt 1.25/1.25 U81(tt) -> tt 1.25/1.25 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.25 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.25 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.25 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.25 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.25 U96(tt) -> tt 1.25/1.25 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.25 isNat(0) -> tt 1.25/1.25 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.25 isNatIList(zeros) -> tt 1.25/1.25 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.25 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.25 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(zeros) -> tt 1.25/1.25 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(nil) -> tt 1.25/1.25 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.25 isNatKind(0) -> tt 1.25/1.25 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.25 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(nil) -> tt 1.25/1.25 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.25 length(nil) -> 0 1.25/1.25 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.25 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.25 zeros -> cons(0,zeros) 1.25/1.25 -> Unhiding Rules: 1.25/1.25 take(M,IL) -> TAKE(M,IL) 1.25/1.25 take(M,x7) -> x7 1.25/1.25 take(x7,IL) -> x7 1.25/1.25 zeros -> ZEROS 1.25/1.25 1.25/1.25 Problem 1: 1.25/1.25 1.25/1.25 SCC Processor: 1.25/1.25 -> Pairs: 1.25/1.25 U101#(tt,V1,V2) -> U102#(isNatKind(V1),V1,V2) 1.25/1.25 U101#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U102#(tt,V1,V2) -> U103#(isNatIListKind(V2),V1,V2) 1.25/1.25 U102#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U103#(tt,V1,V2) -> U104#(isNatIListKind(V2),V1,V2) 1.25/1.25 U103#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U104#(tt,V1,V2) -> U105#(isNat(V1),V2) 1.25/1.25 U104#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U105#(tt,V2) -> U106#(isNatIList(V2)) 1.25/1.25 U105#(tt,V2) -> ISNATILIST(V2) 1.25/1.25 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.25 U11#(tt,V1) -> ISNATILISTKIND(V1) 1.25/1.25 U111#(tt,L,N) -> U112#(isNatIListKind(L),L,N) 1.25/1.25 U111#(tt,L,N) -> ISNATILISTKIND(L) 1.25/1.25 U112#(tt,L,N) -> U113#(isNat(N),L,N) 1.25/1.25 U112#(tt,L,N) -> ISNAT(N) 1.25/1.25 U113#(tt,L,N) -> U114#(isNatKind(N),L) 1.25/1.25 U113#(tt,L,N) -> ISNATKIND(N) 1.25/1.25 U114#(tt,L) -> LENGTH(L) 1.25/1.25 U114#(tt,L) -> L 1.25/1.25 U12#(tt,V1) -> U13#(isNatList(V1)) 1.25/1.25 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.25 U121#(tt,IL) -> U122#(isNatIListKind(IL)) 1.25/1.25 U121#(tt,IL) -> ISNATILISTKIND(IL) 1.25/1.25 U131#(tt,IL,M,N) -> U132#(isNatIListKind(IL),IL,M,N) 1.25/1.25 U131#(tt,IL,M,N) -> ISNATILISTKIND(IL) 1.25/1.25 U132#(tt,IL,M,N) -> U133#(isNat(M),IL,M,N) 1.25/1.25 U132#(tt,IL,M,N) -> ISNAT(M) 1.25/1.25 U133#(tt,IL,M,N) -> U134#(isNatKind(M),IL,M,N) 1.25/1.25 U133#(tt,IL,M,N) -> ISNATKIND(M) 1.25/1.25 U134#(tt,IL,M,N) -> U135#(isNat(N),IL,M,N) 1.25/1.25 U134#(tt,IL,M,N) -> ISNAT(N) 1.25/1.25 U135#(tt,IL,M,N) -> U136#(isNatKind(N),IL,M,N) 1.25/1.25 U135#(tt,IL,M,N) -> ISNATKIND(N) 1.25/1.25 U136#(tt,IL,M,N) -> N 1.25/1.25 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.25 U21#(tt,V1) -> ISNATKIND(V1) 1.25/1.25 U22#(tt,V1) -> U23#(isNat(V1)) 1.25/1.25 U22#(tt,V1) -> ISNAT(V1) 1.25/1.25 U31#(tt,V) -> U32#(isNatIListKind(V),V) 1.25/1.25 U31#(tt,V) -> ISNATILISTKIND(V) 1.25/1.25 U32#(tt,V) -> U33#(isNatList(V)) 1.25/1.25 U32#(tt,V) -> ISNATLIST(V) 1.25/1.25 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.25 U41#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.25 U42#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.25 U43#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.25 U44#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U45#(tt,V2) -> U46#(isNatIList(V2)) 1.25/1.25 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.25 U51#(tt,V2) -> U52#(isNatIListKind(V2)) 1.25/1.25 U51#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U61#(tt,V2) -> U62#(isNatIListKind(V2)) 1.25/1.25 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.25 U91#(tt,V1,V2) -> ISNATKIND(V1) 1.25/1.25 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.25 U92#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.25 U93#(tt,V1,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.25 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.25 U95#(tt,V2) -> U96#(isNatList(V2)) 1.25/1.25 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.25 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.25 ISNAT(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.25 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.25 ISNAT(s(V1)) -> ISNATKIND(V1) 1.25/1.25 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATILIST(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATILIST(V) -> U31#(isNatIListKind(V),V) 1.25/1.25 ISNATILIST(V) -> ISNATILISTKIND(V) 1.25/1.25 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.25 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATILISTKIND(cons(V1,V2)) -> U51#(isNatKind(V1),V2) 1.25/1.25 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATKIND(length(V1)) -> U71#(isNatIListKind(V1)) 1.25/1.25 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.25 ISNATKIND(s(V1)) -> U81#(isNatKind(V1)) 1.25/1.25 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.25 ISNATLIST(take(V1,V2)) -> U101#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATLIST(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.25 ISNATLIST(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.25 LENGTH(cons(N,L)) -> U111#(isNatList(L),L,N) 1.25/1.25 LENGTH(cons(N,L)) -> ISNATLIST(L) 1.25/1.25 TAKE(0,IL) -> U121#(isNatIList(IL),IL) 1.25/1.25 TAKE(0,IL) -> ISNATILIST(IL) 1.25/1.25 TAKE(s(M),cons(N,IL)) -> U131#(isNatIList(IL),IL,M,N) 1.25/1.25 TAKE(s(M),cons(N,IL)) -> ISNATILIST(IL) 1.25/1.25 -> Rules: 1.25/1.25 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.25 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.25 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.25 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.25 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.25 U106(tt) -> tt 1.25/1.25 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.25 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.25 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.25 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.25 U114(tt,L) -> s(length(L)) 1.25/1.25 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.25 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.25 U122(tt) -> nil 1.25/1.25 U13(tt) -> tt 1.25/1.25 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.25 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.25 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.25 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.25 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.25 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.25 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.25 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.25 U23(tt) -> tt 1.25/1.25 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.25 U32(tt,V) -> U33(isNatList(V)) 1.25/1.25 U33(tt) -> tt 1.25/1.25 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.25 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.25 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.25 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.25 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.25 U46(tt) -> tt 1.25/1.25 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.25 U52(tt) -> tt 1.25/1.25 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.25 U62(tt) -> tt 1.25/1.25 U71(tt) -> tt 1.25/1.25 U81(tt) -> tt 1.25/1.25 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.25 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.25 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.25 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.25 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.25 U96(tt) -> tt 1.25/1.25 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.25 isNat(0) -> tt 1.25/1.25 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.25 isNatIList(zeros) -> tt 1.25/1.25 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.25 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.25 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(zeros) -> tt 1.25/1.25 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.25 isNatIListKind(nil) -> tt 1.25/1.25 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.25 isNatKind(0) -> tt 1.25/1.25 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.25 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.25 isNatList(nil) -> tt 1.25/1.25 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.25 length(nil) -> 0 1.25/1.25 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.25 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.25 zeros -> cons(0,zeros) 1.25/1.25 -> Unhiding rules: 1.25/1.25 take(M,IL) -> TAKE(M,IL) 1.25/1.25 take(M,x7) -> x7 1.25/1.25 take(x7,IL) -> x7 1.25/1.25 zeros -> ZEROS 1.25/1.25 ->Strongly Connected Components: 1.25/1.25 ->->Cycle: 1.25/1.25 ->->-> Pairs: 1.25/1.25 U51#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.25 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> U51#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.26 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U101#(tt,V1,V2) -> U102#(isNatKind(V1),V1,V2) 1.25/1.26 U102#(tt,V1,V2) -> U103#(isNatIListKind(V2),V1,V2) 1.25/1.26 U103#(tt,V1,V2) -> U104#(isNatIListKind(V2),V1,V2) 1.25/1.26 U104#(tt,V1,V2) -> U105#(isNat(V1),V2) 1.25/1.26 U104#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U105#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U31#(tt,V) -> U32#(isNatIListKind(V),V) 1.25/1.26 U32#(tt,V) -> ISNATLIST(V) 1.25/1.26 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.26 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.26 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.26 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.26 U44#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATILIST(V) -> U31#(isNatIListKind(V),V) 1.25/1.26 ISNATLIST(take(V1,V2)) -> U101#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U131#(tt,IL,M,N) -> U132#(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132#(tt,IL,M,N) -> U133#(isNat(M),IL,M,N) 1.25/1.26 U133#(tt,IL,M,N) -> U134#(isNatKind(M),IL,M,N) 1.25/1.26 U134#(tt,IL,M,N) -> U135#(isNat(N),IL,M,N) 1.25/1.26 U135#(tt,IL,M,N) -> U136#(isNatKind(N),IL,M,N) 1.25/1.26 U136#(tt,IL,M,N) -> N 1.25/1.26 TAKE(s(M),cons(N,IL)) -> U131#(isNatIList(IL),IL,M,N) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 take(M,IL) -> TAKE(M,IL) 1.25/1.26 take(M,x7) -> x7 1.25/1.26 take(x7,IL) -> x7 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U111#(tt,L,N) -> U112#(isNatIListKind(L),L,N) 1.25/1.26 U112#(tt,L,N) -> U113#(isNat(N),L,N) 1.25/1.26 U113#(tt,L,N) -> U114#(isNatKind(N),L) 1.25/1.26 U114#(tt,L) -> LENGTH(L) 1.25/1.26 LENGTH(cons(N,L)) -> U111#(isNatList(L),L,N) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 1.25/1.26 1.25/1.26 The problem is decomposed in 4 subproblems. 1.25/1.26 1.25/1.26 Problem 1.1: 1.25/1.26 1.25/1.26 Reduction Pairs Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U51#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> U51#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.26 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 -> Usable rules: 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 ->Interpretation type: 1.25/1.26 Linear 1.25/1.26 ->Coefficients: 1.25/1.26 Natural Numbers 1.25/1.26 ->Dimension: 1.25/1.26 1 1.25/1.26 ->Bound: 1.25/1.26 2 1.25/1.26 ->Interpretation: 1.25/1.26 1.25/1.26 [U51](X1,X2) = 2.X1 + 2 1.25/1.26 [U52](X) = 2 1.25/1.26 [U61](X1,X2) = 2.X1 + 2.X2 1.25/1.26 [U62](X) = X + 2 1.25/1.26 [U71](X) = 2 1.25/1.26 [U81](X) = X 1.25/1.26 [isNatIListKind](X) = 2.X + 2 1.25/1.26 [isNatKind](X) = 2 1.25/1.26 [length](X) = X + 2 1.25/1.26 [take](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [zeros] = 0 1.25/1.26 [0] = 1 1.25/1.26 [cons](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [nil] = 2 1.25/1.26 [s](X) = 2.X + 1 1.25/1.26 [tt] = 2 1.25/1.26 [U51#](X1,X2) = X1 + 2.X2 + 1 1.25/1.26 [U61#](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [ISNATILISTKIND](X) = 2.X + 2 1.25/1.26 [ISNATKIND](X) = 2.X + 2 1.25/1.26 1.25/1.26 Problem 1.1: 1.25/1.26 1.25/1.26 SCC Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> U51#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.26 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Strongly Connected Components: 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.26 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 1.25/1.26 Problem 1.1: 1.25/1.26 1.25/1.26 SubNColl Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> U61#(isNatKind(V1),V2) 1.25/1.26 ISNATILISTKIND(take(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATILISTKIND(cons(V1,V2)) -> ISNATKIND(V1) 1.25/1.26 ISNATKIND(length(V1)) -> ISNATILISTKIND(V1) 1.25/1.26 ISNATKIND(s(V1)) -> ISNATKIND(V1) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Projection: 1.25/1.26 pi(U61#) = 2 1.25/1.26 pi(ISNATILISTKIND) = 1 1.25/1.26 pi(ISNATKIND) = 1 1.25/1.26 1.25/1.26 Problem 1.1: 1.25/1.26 1.25/1.26 SCC Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U61#(tt,V2) -> ISNATILISTKIND(V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Strongly Connected Components: 1.25/1.26 There is no strongly connected component 1.25/1.26 1.25/1.26 The problem is finite. 1.25/1.26 1.25/1.26 Problem 1.2: 1.25/1.26 1.25/1.26 Reduction Pairs Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U101#(tt,V1,V2) -> U102#(isNatKind(V1),V1,V2) 1.25/1.26 U102#(tt,V1,V2) -> U103#(isNatIListKind(V2),V1,V2) 1.25/1.26 U103#(tt,V1,V2) -> U104#(isNatIListKind(V2),V1,V2) 1.25/1.26 U104#(tt,V1,V2) -> U105#(isNat(V1),V2) 1.25/1.26 U104#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U105#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U31#(tt,V) -> U32#(isNatIListKind(V),V) 1.25/1.26 U32#(tt,V) -> ISNATLIST(V) 1.25/1.26 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.26 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.26 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.26 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.26 U44#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATILIST(V) -> U31#(isNatIListKind(V),V) 1.25/1.26 ISNATLIST(take(V1,V2)) -> U101#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 -> Usable rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U13(tt) -> tt 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 ->Interpretation type: 1.25/1.26 Linear 1.25/1.26 ->Coefficients: 1.25/1.26 Natural Numbers 1.25/1.26 ->Dimension: 1.25/1.26 1 1.25/1.26 ->Bound: 1.25/1.26 2 1.25/1.26 ->Interpretation: 1.25/1.26 1.25/1.26 [U101](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U102](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U103](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U104](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U105](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [U106](X) = X + 2 1.25/1.26 [U11](X1,X2) = 2.X2 + 2 1.25/1.26 [U12](X1,X2) = X1 + X2 1.25/1.26 [U13](X) = 2 1.25/1.26 [U21](X1,X2) = 2.X2 + 2 1.25/1.26 [U22](X1,X2) = X1 + 2.X2 1.25/1.26 [U23](X) = 2.X + 2 1.25/1.26 [U31](X1,X2) = 2.X2 1.25/1.26 [U32](X1,X2) = 2.X2 1.25/1.26 [U33](X) = X 1.25/1.26 [U41](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U42](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U43](X1,X2,X3) = 2.X1 + 2.X2 1.25/1.26 [U44](X1,X2,X3) = 2.X2 + 2 1.25/1.26 [U45](X1,X2) = 2.X1 + 2 1.25/1.26 [U46](X) = 2 1.25/1.26 [U51](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U52](X) = 2 1.25/1.26 [U61](X1,X2) = 2.X1 + 2.X2 1.25/1.26 [U62](X) = 2.X 1.25/1.26 [U71](X) = 2 1.25/1.26 [U81](X) = 2 1.25/1.26 [U91](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U92](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U93](X1,X2,X3) = 2.X1 + X2 1.25/1.26 [U94](X1,X2,X3) = X2 + 2 1.25/1.26 [U95](X1,X2) = X1 + 2 1.25/1.26 [U96](X) = 2 1.25/1.26 [isNat](X) = X 1.25/1.26 [isNatIList](X) = 2.X 1.25/1.26 [isNatIListKind](X) = X + 2 1.25/1.26 [isNatKind](X) = 2 1.25/1.26 [isNatList](X) = 2.X 1.25/1.26 [length](X) = 2.X + 2 1.25/1.26 [take](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [zeros] = 2 1.25/1.26 [0] = 2 1.25/1.26 [cons](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [nil] = 2 1.25/1.26 [s](X) = 2.X + 2 1.25/1.26 [tt] = 2 1.25/1.26 [U101#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U102#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U103#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U104#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U105#](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [U11#](X1,X2) = 2.X2 + 2 1.25/1.26 [U12#](X1,X2) = 2.X2 + 2 1.25/1.26 [U21#](X1,X2) = 2.X1 + 2.X2 1.25/1.26 [U22#](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U31#](X1,X2) = 2.X2 + 2 1.25/1.26 [U32#](X1,X2) = 2.X2 + 2 1.25/1.26 [U41#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 1.25/1.26 [U42#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U43#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U44#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U45#](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [U91#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 1.25/1.26 [U92#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U93#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U94#](X1,X2,X3) = 2.X2 + 2.X3 + 1 1.25/1.26 [U95#](X1,X2) = X1 + 2.X2 1.25/1.26 [ISNAT](X) = 2.X 1.25/1.26 [ISNATILIST](X) = 2.X + 2 1.25/1.26 [ISNATLIST](X) = 2.X + 2 1.25/1.26 1.25/1.26 Problem 1.2: 1.25/1.26 1.25/1.26 SCC Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U102#(tt,V1,V2) -> U103#(isNatIListKind(V2),V1,V2) 1.25/1.26 U103#(tt,V1,V2) -> U104#(isNatIListKind(V2),V1,V2) 1.25/1.26 U104#(tt,V1,V2) -> U105#(isNat(V1),V2) 1.25/1.26 U104#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U105#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U31#(tt,V) -> U32#(isNatIListKind(V),V) 1.25/1.26 U32#(tt,V) -> ISNATLIST(V) 1.25/1.26 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.26 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.26 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.26 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.26 U44#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATILIST(V) -> U31#(isNatIListKind(V),V) 1.25/1.26 ISNATLIST(take(V1,V2)) -> U101#(isNatKind(V1),V1,V2) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Strongly Connected Components: 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.26 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.26 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.26 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.26 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.26 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 1.25/1.26 1.25/1.26 The problem is decomposed in 2 subproblems. 1.25/1.26 1.25/1.26 Problem 1.2.1: 1.25/1.26 1.25/1.26 Reduction Pairs Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U11#(tt,V1) -> U12#(isNatIListKind(V1),V1) 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 -> Usable rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U13(tt) -> tt 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 ->Interpretation type: 1.25/1.26 Linear 1.25/1.26 ->Coefficients: 1.25/1.26 Natural Numbers 1.25/1.26 ->Dimension: 1.25/1.26 1 1.25/1.26 ->Bound: 1.25/1.26 2 1.25/1.26 ->Interpretation: 1.25/1.26 1.25/1.26 [U101](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U102](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U103](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U104](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U105](X1,X2) = 2.X1 + 2.X2 + 1 1.25/1.26 [U106](X) = X + 2 1.25/1.26 [U11](X1,X2) = X1 + 2.X2 + 1 1.25/1.26 [U12](X1,X2) = X1 + X2 + 1 1.25/1.26 [U13](X) = X + 1 1.25/1.26 [U21](X1,X2) = X2 + 2 1.25/1.26 [U22](X1,X2) = X2 + 2 1.25/1.26 [U23](X) = X + 1 1.25/1.26 [U31](X1,X2) = X1 + 2.X2 1.25/1.26 [U32](X1,X2) = X1 + 2.X2 1.25/1.26 [U33](X) = 2 1.25/1.26 [U41](X1,X2,X3) = 2.X1 + 2.X2 + X3 + 1 1.25/1.26 [U42](X1,X2,X3) = X1 + 2.X2 + X3 + 2 1.25/1.26 [U43](X1,X2,X3) = 2.X1 + 2.X2 + X3 1.25/1.26 [U44](X1,X2,X3) = X1 + 2.X2 + X3 + 1 1.25/1.26 [U45](X1,X2) = 2.X1 + X2 1.25/1.26 [U46](X) = 2 1.25/1.26 [U51](X1,X2) = 2 1.25/1.26 [U52](X) = 2 1.25/1.26 [U61](X1,X2) = 2 1.25/1.26 [U62](X) = X 1.25/1.26 [U71](X) = X 1.25/1.26 [U81](X) = 2 1.25/1.26 [U91](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U92](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U93](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U94](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U95](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [U96](X) = 2.X + 2 1.25/1.26 [isNat](X) = X + 1 1.25/1.26 [isNatIList](X) = 2.X + 2 1.25/1.26 [isNatIListKind](X) = 2 1.25/1.26 [isNatKind](X) = 2 1.25/1.26 [isNatList](X) = X + 2 1.25/1.26 [length](X) = 2.X + 2 1.25/1.26 [take](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [zeros] = 2 1.25/1.26 [0] = 2 1.25/1.26 [cons](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [nil] = 0 1.25/1.26 [s](X) = 2.X + 2 1.25/1.26 [tt] = 2 1.25/1.26 [U11#](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [U12#](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U21#](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U22#](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U91#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U92#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U93#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U94#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U95#](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [ISNAT](X) = 2.X + 2 1.25/1.26 [ISNATLIST](X) = 2.X + 2 1.25/1.26 1.25/1.26 Problem 1.2.1: 1.25/1.26 1.25/1.26 SCC Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U12#(tt,V1) -> ISNATLIST(V1) 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U94#(tt,V1,V2) -> ISNAT(V1) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNAT(length(V1)) -> U11#(isNatIListKind(V1),V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Strongly Connected Components: 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->->Cycle: 1.25/1.26 ->->-> Pairs: 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 ->->-> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 ->->-> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 1.25/1.26 1.25/1.26 The problem is decomposed in 2 subproblems. 1.25/1.26 1.25/1.26 Problem 1.2.1.1: 1.25/1.26 1.25/1.26 SubNColl Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 ISNAT(s(V1)) -> U21#(isNatKind(V1),V1) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Projection: 1.25/1.26 pi(U21#) = 2 1.25/1.26 pi(U22#) = 2 1.25/1.26 pi(ISNAT) = 1 1.25/1.26 1.25/1.26 Problem 1.2.1.1: 1.25/1.26 1.25/1.26 SCC Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U21#(tt,V1) -> U22#(isNatKind(V1),V1) 1.25/1.26 U22#(tt,V1) -> ISNAT(V1) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 ->Strongly Connected Components: 1.25/1.26 There is no strongly connected component 1.25/1.26 1.25/1.26 The problem is finite. 1.25/1.26 1.25/1.26 Problem 1.2.1.2: 1.25/1.26 1.25/1.26 Reduction Pairs Processor: 1.25/1.26 -> Pairs: 1.25/1.26 U91#(tt,V1,V2) -> U92#(isNatKind(V1),V1,V2) 1.25/1.26 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.26 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.26 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.26 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.26 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.26 -> Rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.26 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.26 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.26 U114(tt,L) -> s(length(L)) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.26 U122(tt) -> nil 1.25/1.26 U13(tt) -> tt 1.25/1.26 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.26 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.26 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.26 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.26 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.26 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.26 length(nil) -> 0 1.25/1.26 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.26 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.26 zeros -> cons(0,zeros) 1.25/1.26 -> Unhiding rules: 1.25/1.26 Empty 1.25/1.26 -> Usable rules: 1.25/1.26 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.26 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.26 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.26 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.26 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.26 U106(tt) -> tt 1.25/1.26 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.26 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.26 U13(tt) -> tt 1.25/1.26 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.26 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.26 U23(tt) -> tt 1.25/1.26 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.26 U32(tt,V) -> U33(isNatList(V)) 1.25/1.26 U33(tt) -> tt 1.25/1.26 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.26 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.26 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.26 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.26 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.26 U46(tt) -> tt 1.25/1.26 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.26 U52(tt) -> tt 1.25/1.26 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.26 U62(tt) -> tt 1.25/1.26 U71(tt) -> tt 1.25/1.26 U81(tt) -> tt 1.25/1.26 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.26 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.26 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.26 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.26 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.26 U96(tt) -> tt 1.25/1.26 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.26 isNat(0) -> tt 1.25/1.26 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.26 isNatIList(zeros) -> tt 1.25/1.26 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.26 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.26 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(zeros) -> tt 1.25/1.26 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.26 isNatIListKind(nil) -> tt 1.25/1.26 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.26 isNatKind(0) -> tt 1.25/1.26 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.26 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.26 isNatList(nil) -> tt 1.25/1.26 ->Interpretation type: 1.25/1.26 Linear 1.25/1.26 ->Coefficients: 1.25/1.26 Natural Numbers 1.25/1.26 ->Dimension: 1.25/1.26 1 1.25/1.26 ->Bound: 1.25/1.26 2 1.25/1.26 ->Interpretation: 1.25/1.26 1.25/1.26 [U101](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 1 1.25/1.26 [U102](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 1 1.25/1.26 [U103](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U104](X1,X2,X3) = X1 + 2.X2 + 2 1.25/1.26 [U105](X1,X2) = X1 + 2 1.25/1.26 [U106](X) = 2 1.25/1.26 [U11](X1,X2) = 2 1.25/1.26 [U12](X1,X2) = 2 1.25/1.26 [U13](X) = 2 1.25/1.26 [U21](X1,X2) = 2 1.25/1.26 [U22](X1,X2) = 2 1.25/1.26 [U23](X) = 2 1.25/1.26 [U31](X1,X2) = 2.X2 + 2 1.25/1.26 [U32](X1,X2) = 2.X2 + 2 1.25/1.26 [U33](X) = X + 2 1.25/1.26 [U41](X1,X2,X3) = 2.X1 + 2.X3 + 2 1.25/1.26 [U42](X1,X2,X3) = 2.X1 + 2.X3 1.25/1.26 [U43](X1,X2,X3) = 2.X3 + 2 1.25/1.26 [U44](X1,X2,X3) = X1 + 2 1.25/1.26 [U45](X1,X2) = X1 + 2 1.25/1.26 [U46](X) = 2 1.25/1.26 [U51](X1,X2) = X1 + 2.X2 + 2 1.25/1.26 [U52](X) = X + 2 1.25/1.26 [U61](X1,X2) = X1 + 2 1.25/1.26 [U62](X) = 2 1.25/1.26 [U71](X) = 2 1.25/1.26 [U81](X) = 2 1.25/1.26 [U91](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U92](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 1.25/1.26 [U93](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U94](X1,X2,X3) = 2.X2 + 2.X3 1.25/1.26 [U95](X1,X2) = 2.X2 1.25/1.26 [U96](X) = X 1.25/1.26 [isNat](X) = 2 1.25/1.26 [isNatIList](X) = 2.X + 2 1.25/1.26 [isNatIListKind](X) = 2.X 1.25/1.26 [isNatKind](X) = 2 1.25/1.26 [isNatList](X) = 2.X 1.25/1.26 [length](X) = 2.X + 2 1.25/1.26 [take](X1,X2) = 2.X1 + X2 + 2 1.25/1.26 [zeros] = 2 1.25/1.26 [0] = 0 1.25/1.26 [cons](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.26 [nil] = 2 1.25/1.26 [s](X) = 1 1.25/1.26 [tt] = 2 1.25/1.26 [U91#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 1 1.25/1.26 [U92#](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.26 [U93#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U94#](X1,X2,X3) = 2.X2 + 2.X3 + 2 1.25/1.26 [U95#](X1,X2) = 2.X2 + 2 1.25/1.27 [ISNATLIST](X) = 2.X + 2 1.25/1.27 1.25/1.27 Problem 1.2.1.2: 1.25/1.27 1.25/1.27 SCC Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U92#(tt,V1,V2) -> U93#(isNatIListKind(V2),V1,V2) 1.25/1.27 U93#(tt,V1,V2) -> U94#(isNatIListKind(V2),V1,V2) 1.25/1.27 U94#(tt,V1,V2) -> U95#(isNat(V1),V2) 1.25/1.27 U95#(tt,V2) -> ISNATLIST(V2) 1.25/1.27 ISNATLIST(cons(V1,V2)) -> U91#(isNatKind(V1),V1,V2) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 ->Strongly Connected Components: 1.25/1.27 There is no strongly connected component 1.25/1.27 1.25/1.27 The problem is finite. 1.25/1.27 1.25/1.27 Problem 1.2.2: 1.25/1.27 1.25/1.27 Reduction Pairs Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U41#(tt,V1,V2) -> U42#(isNatKind(V1),V1,V2) 1.25/1.27 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.27 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.27 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.27 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.27 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 -> Usable rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U13(tt) -> tt 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 ->Interpretation type: 1.25/1.27 Linear 1.25/1.27 ->Coefficients: 1.25/1.27 Natural Numbers 1.25/1.27 ->Dimension: 1.25/1.27 1 1.25/1.27 ->Bound: 1.25/1.27 2 1.25/1.27 ->Interpretation: 1.25/1.27 1.25/1.27 [U101](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.27 [U102](X1,X2,X3) = 2.X1 + 2.X3 + 2 1.25/1.27 [U103](X1,X2,X3) = 2.X3 + 2 1.25/1.27 [U104](X1,X2,X3) = X1 + 2.X3 1.25/1.27 [U105](X1,X2) = X2 + 2 1.25/1.27 [U106](X) = 2 1.25/1.27 [U11](X1,X2) = X1 + 2.X2 + 2 1.25/1.27 [U12](X1,X2) = X1 + 2.X2 + 2 1.25/1.27 [U13](X) = X + 2 1.25/1.27 [U21](X1,X2) = 2.X1 + 2 1.25/1.27 [U22](X1,X2) = 2 1.25/1.27 [U23](X) = 2 1.25/1.27 [U31](X1,X2) = 2.X2 + 2 1.25/1.27 [U32](X1,X2) = X1 + 2.X2 1.25/1.27 [U33](X) = X 1.25/1.27 [U41](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.27 [U42](X1,X2,X3) = 2.X1 + 2.X3 + 2 1.25/1.27 [U43](X1,X2,X3) = 2.X1 + 2.X3 + 1 1.25/1.27 [U44](X1,X2,X3) = X1 + 2 1.25/1.27 [U45](X1,X2) = 2 1.25/1.27 [U46](X) = 2 1.25/1.27 [U51](X1,X2) = 2 1.25/1.27 [U52](X) = 2 1.25/1.27 [U61](X1,X2) = 2 1.25/1.27 [U62](X) = 2 1.25/1.27 [U71](X) = 2 1.25/1.27 [U81](X) = X + 1 1.25/1.27 [U91](X1,X2,X3) = X1 + 2.X2 + 2.X3 + 2 1.25/1.27 [U92](X1,X2,X3) = 2.X1 + 2.X3 1.25/1.27 [U93](X1,X2,X3) = 2.X1 + 2.X3 1.25/1.27 [U94](X1,X2,X3) = 2.X1 + 2.X3 1.25/1.27 [U95](X1,X2) = 2.X2 + 2 1.25/1.27 [U96](X) = 2 1.25/1.27 [isNat](X) = 2.X + 2 1.25/1.27 [isNatIList](X) = 2.X + 2 1.25/1.27 [isNatIListKind](X) = 2 1.25/1.27 [isNatKind](X) = X + 1 1.25/1.27 [isNatList](X) = 2.X + 2 1.25/1.27 [length](X) = 2.X + 2 1.25/1.27 [take](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.27 [zeros] = 1 1.25/1.27 [0] = 2 1.25/1.27 [cons](X1,X2) = 2.X1 + 2.X2 + 2 1.25/1.27 [nil] = 2 1.25/1.27 [s](X) = 2.X + 1 1.25/1.27 [tt] = 2 1.25/1.27 [U41#](X1,X2,X3) = 2.X1 + 2.X2 + 2.X3 + 2 1.25/1.27 [U42#](X1,X2,X3) = X1 + X2 + 2.X3 + 2 1.25/1.27 [U43#](X1,X2,X3) = X1 + X2 + 2.X3 + 2 1.25/1.27 [U44#](X1,X2,X3) = X1 + X2 + 2.X3 + 1 1.25/1.27 [U45#](X1,X2) = 2.X2 + 2 1.25/1.27 [ISNATILIST](X) = 2.X + 2 1.25/1.27 1.25/1.27 Problem 1.2.2: 1.25/1.27 1.25/1.27 SCC Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U42#(tt,V1,V2) -> U43#(isNatIListKind(V2),V1,V2) 1.25/1.27 U43#(tt,V1,V2) -> U44#(isNatIListKind(V2),V1,V2) 1.25/1.27 U44#(tt,V1,V2) -> U45#(isNat(V1),V2) 1.25/1.27 U45#(tt,V2) -> ISNATILIST(V2) 1.25/1.27 ISNATILIST(cons(V1,V2)) -> U41#(isNatKind(V1),V1,V2) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 ->Strongly Connected Components: 1.25/1.27 There is no strongly connected component 1.25/1.27 1.25/1.27 The problem is finite. 1.25/1.27 1.25/1.27 Problem 1.3: 1.25/1.27 1.25/1.27 SubNColl Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U131#(tt,IL,M,N) -> U132#(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132#(tt,IL,M,N) -> U133#(isNat(M),IL,M,N) 1.25/1.27 U133#(tt,IL,M,N) -> U134#(isNatKind(M),IL,M,N) 1.25/1.27 U134#(tt,IL,M,N) -> U135#(isNat(N),IL,M,N) 1.25/1.27 U135#(tt,IL,M,N) -> U136#(isNatKind(N),IL,M,N) 1.25/1.27 U136#(tt,IL,M,N) -> N 1.25/1.27 TAKE(s(M),cons(N,IL)) -> U131#(isNatIList(IL),IL,M,N) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 take(M,IL) -> TAKE(M,IL) 1.25/1.27 take(M,x7) -> x7 1.25/1.27 take(x7,IL) -> x7 1.25/1.27 ->Projection: 1.25/1.27 pi(U131#) = 4 1.25/1.27 pi(U132#) = 4 1.25/1.27 pi(U133#) = 4 1.25/1.27 pi(U134#) = 4 1.25/1.27 pi(U135#) = 4 1.25/1.27 pi(U136#) = 4 1.25/1.27 pi(TAKE) = 2 1.25/1.27 1.25/1.27 Problem 1.3: 1.25/1.27 1.25/1.27 SCC Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U131#(tt,IL,M,N) -> U132#(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132#(tt,IL,M,N) -> U133#(isNat(M),IL,M,N) 1.25/1.27 U133#(tt,IL,M,N) -> U134#(isNatKind(M),IL,M,N) 1.25/1.27 U134#(tt,IL,M,N) -> U135#(isNat(N),IL,M,N) 1.25/1.27 U135#(tt,IL,M,N) -> U136#(isNatKind(N),IL,M,N) 1.25/1.27 U136#(tt,IL,M,N) -> N 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 ->Strongly Connected Components: 1.25/1.27 There is no strongly connected component 1.25/1.27 1.25/1.27 The problem is finite. 1.25/1.27 1.25/1.27 Problem 1.4: 1.25/1.27 1.25/1.27 Reduction Pairs Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U111#(tt,L,N) -> U112#(isNatIListKind(L),L,N) 1.25/1.27 U112#(tt,L,N) -> U113#(isNat(N),L,N) 1.25/1.27 U113#(tt,L,N) -> U114#(isNatKind(N),L) 1.25/1.27 U114#(tt,L) -> LENGTH(L) 1.25/1.27 LENGTH(cons(N,L)) -> U111#(isNatList(L),L,N) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 -> Usable rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 ->Interpretation type: 1.25/1.27 Linear 1.25/1.27 ->Coefficients: 1.25/1.27 Natural Numbers 1.25/1.27 ->Dimension: 1.25/1.27 1 1.25/1.27 ->Bound: 1.25/1.27 2 1.25/1.27 ->Interpretation: 1.25/1.27 1.25/1.27 [U101](X1,X2,X3) = X2 + 1 1.25/1.27 [U102](X1,X2,X3) = X2 + 1 1.25/1.27 [U103](X1,X2,X3) = X2 + 1 1.25/1.27 [U104](X1,X2,X3) = X2 + 1 1.25/1.27 [U105](X1,X2) = X1 1.25/1.27 [U106](X) = 2 1.25/1.27 [U11](X1,X2) = X2 + 1 1.25/1.27 [U111](X1,X2,X3) = 2.X2 1.25/1.27 [U112](X1,X2,X3) = 2.X2 1.25/1.27 [U113](X1,X2,X3) = 2.X2 1.25/1.27 [U114](X1,X2) = 2.X2 1.25/1.27 [U12](X1,X2) = X2 + 1 1.25/1.27 [U121](X1,X2) = 2 1.25/1.27 [U122](X) = 2 1.25/1.27 [U13](X) = X 1.25/1.27 [U131](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U132](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U133](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U134](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U135](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U136](X1,X2,X3,X4) = 2.X3 1.25/1.27 [U21](X1,X2) = 2.X2 + 1 1.25/1.27 [U22](X1,X2) = 2.X2 + 1 1.25/1.27 [U23](X) = X 1.25/1.27 [U31](X1,X2) = 2.X2 + 2 1.25/1.27 [U32](X1,X2) = 2.X2 + 2 1.25/1.27 [U33](X) = 2.X 1.25/1.27 [U41](X1,X2,X3) = X1 + 2.X3 1.25/1.27 [U42](X1,X2,X3) = 2.X3 + 2 1.25/1.27 [U43](X1,X2,X3) = 2.X3 + 2 1.25/1.27 [U44](X1,X2,X3) = 2.X3 + 2 1.25/1.27 [U45](X1,X2) = 2.X2 + 2 1.25/1.27 [U46](X) = X 1.25/1.27 [U51](X1,X2) = 2 1.25/1.27 [U52](X) = 2 1.25/1.27 [U61](X1,X2) = 2 1.25/1.27 [U62](X) = X 1.25/1.27 [U71](X) = 2 1.25/1.27 [U81](X) = 2 1.25/1.27 [U91](X1,X2,X3) = 2.X3 + 1 1.25/1.27 [U92](X1,X2,X3) = 2.X3 + 1 1.25/1.27 [U93](X1,X2,X3) = 2.X3 + 1 1.25/1.27 [U94](X1,X2,X3) = 2.X3 + 1 1.25/1.27 [U95](X1,X2) = 2.X2 + 1 1.25/1.27 [U96](X) = X 1.25/1.27 [isNat](X) = X + 1 1.25/1.27 [isNatIList](X) = 2.X + 2 1.25/1.27 [isNatIListKind](X) = 2 1.25/1.27 [isNatKind](X) = 2 1.25/1.27 [isNatList](X) = X + 1 1.25/1.27 [length](X) = X 1.25/1.27 [take](X1,X2) = X1 1.25/1.27 [zeros] = 0 1.25/1.27 [0] = 2 1.25/1.27 [cons](X1,X2) = 2.X2 1.25/1.27 [nil] = 2 1.25/1.27 [s](X) = 2.X 1.25/1.27 [tt] = 2 1.25/1.27 [U111#](X1,X2,X3) = 2.X1 + 2.X2 1.25/1.27 [U112#](X1,X2,X3) = X1 + 2.X2 + 1 1.25/1.27 [U113#](X1,X2,X3) = 2.X2 + 2 1.25/1.27 [U114#](X1,X2) = X1 + 2.X2 1.25/1.27 [LENGTH](X) = 2.X + 2 1.25/1.27 1.25/1.27 Problem 1.4: 1.25/1.27 1.25/1.27 SCC Processor: 1.25/1.27 -> Pairs: 1.25/1.27 U112#(tt,L,N) -> U113#(isNat(N),L,N) 1.25/1.27 U113#(tt,L,N) -> U114#(isNatKind(N),L) 1.25/1.27 U114#(tt,L) -> LENGTH(L) 1.25/1.27 LENGTH(cons(N,L)) -> U111#(isNatList(L),L,N) 1.25/1.27 -> Rules: 1.25/1.27 U101(tt,V1,V2) -> U102(isNatKind(V1),V1,V2) 1.25/1.27 U102(tt,V1,V2) -> U103(isNatIListKind(V2),V1,V2) 1.25/1.27 U103(tt,V1,V2) -> U104(isNatIListKind(V2),V1,V2) 1.25/1.27 U104(tt,V1,V2) -> U105(isNat(V1),V2) 1.25/1.27 U105(tt,V2) -> U106(isNatIList(V2)) 1.25/1.27 U106(tt) -> tt 1.25/1.27 U11(tt,V1) -> U12(isNatIListKind(V1),V1) 1.25/1.27 U111(tt,L,N) -> U112(isNatIListKind(L),L,N) 1.25/1.27 U112(tt,L,N) -> U113(isNat(N),L,N) 1.25/1.27 U113(tt,L,N) -> U114(isNatKind(N),L) 1.25/1.27 U114(tt,L) -> s(length(L)) 1.25/1.27 U12(tt,V1) -> U13(isNatList(V1)) 1.25/1.27 U121(tt,IL) -> U122(isNatIListKind(IL)) 1.25/1.27 U122(tt) -> nil 1.25/1.27 U13(tt) -> tt 1.25/1.27 U131(tt,IL,M,N) -> U132(isNatIListKind(IL),IL,M,N) 1.25/1.27 U132(tt,IL,M,N) -> U133(isNat(M),IL,M,N) 1.25/1.27 U133(tt,IL,M,N) -> U134(isNatKind(M),IL,M,N) 1.25/1.27 U134(tt,IL,M,N) -> U135(isNat(N),IL,M,N) 1.25/1.27 U135(tt,IL,M,N) -> U136(isNatKind(N),IL,M,N) 1.25/1.27 U136(tt,IL,M,N) -> cons(N,take(M,IL)) 1.25/1.27 U21(tt,V1) -> U22(isNatKind(V1),V1) 1.25/1.27 U22(tt,V1) -> U23(isNat(V1)) 1.25/1.27 U23(tt) -> tt 1.25/1.27 U31(tt,V) -> U32(isNatIListKind(V),V) 1.25/1.27 U32(tt,V) -> U33(isNatList(V)) 1.25/1.27 U33(tt) -> tt 1.25/1.27 U41(tt,V1,V2) -> U42(isNatKind(V1),V1,V2) 1.25/1.27 U42(tt,V1,V2) -> U43(isNatIListKind(V2),V1,V2) 1.25/1.27 U43(tt,V1,V2) -> U44(isNatIListKind(V2),V1,V2) 1.25/1.27 U44(tt,V1,V2) -> U45(isNat(V1),V2) 1.25/1.27 U45(tt,V2) -> U46(isNatIList(V2)) 1.25/1.27 U46(tt) -> tt 1.25/1.27 U51(tt,V2) -> U52(isNatIListKind(V2)) 1.25/1.27 U52(tt) -> tt 1.25/1.27 U61(tt,V2) -> U62(isNatIListKind(V2)) 1.25/1.27 U62(tt) -> tt 1.25/1.27 U71(tt) -> tt 1.25/1.27 U81(tt) -> tt 1.25/1.27 U91(tt,V1,V2) -> U92(isNatKind(V1),V1,V2) 1.25/1.27 U92(tt,V1,V2) -> U93(isNatIListKind(V2),V1,V2) 1.25/1.27 U93(tt,V1,V2) -> U94(isNatIListKind(V2),V1,V2) 1.25/1.27 U94(tt,V1,V2) -> U95(isNat(V1),V2) 1.25/1.27 U95(tt,V2) -> U96(isNatList(V2)) 1.25/1.27 U96(tt) -> tt 1.25/1.27 isNat(length(V1)) -> U11(isNatIListKind(V1),V1) 1.25/1.27 isNat(0) -> tt 1.25/1.27 isNat(s(V1)) -> U21(isNatKind(V1),V1) 1.25/1.27 isNatIList(zeros) -> tt 1.25/1.27 isNatIList(cons(V1,V2)) -> U41(isNatKind(V1),V1,V2) 1.25/1.27 isNatIList(V) -> U31(isNatIListKind(V),V) 1.25/1.27 isNatIListKind(take(V1,V2)) -> U61(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(zeros) -> tt 1.25/1.27 isNatIListKind(cons(V1,V2)) -> U51(isNatKind(V1),V2) 1.25/1.27 isNatIListKind(nil) -> tt 1.25/1.27 isNatKind(length(V1)) -> U71(isNatIListKind(V1)) 1.25/1.27 isNatKind(0) -> tt 1.25/1.27 isNatKind(s(V1)) -> U81(isNatKind(V1)) 1.25/1.27 isNatList(take(V1,V2)) -> U101(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(cons(V1,V2)) -> U91(isNatKind(V1),V1,V2) 1.25/1.27 isNatList(nil) -> tt 1.25/1.27 length(cons(N,L)) -> U111(isNatList(L),L,N) 1.25/1.27 length(nil) -> 0 1.25/1.27 take(0,IL) -> U121(isNatIList(IL),IL) 1.25/1.27 take(s(M),cons(N,IL)) -> U131(isNatIList(IL),IL,M,N) 1.25/1.27 zeros -> cons(0,zeros) 1.25/1.27 -> Unhiding rules: 1.25/1.27 Empty 1.25/1.27 ->Strongly Connected Components: 1.25/1.27 There is no strongly connected component 1.25/1.27 1.25/1.27 The problem is finite. 1.25/1.27 EOF