201.63/69.61 YES 201.63/69.63 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 201.63/69.63 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 201.63/69.63 201.63/69.63 201.63/69.63 Termination w.r.t. Q of the given QTRS could be proven: 201.63/69.63 201.63/69.63 (0) QTRS 201.63/69.63 (1) DependencyPairsProof [EQUIVALENT, 209 ms] 201.63/69.63 (2) QDP 201.63/69.63 (3) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (4) AND 201.63/69.63 (5) QDP 201.63/69.63 (6) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (7) QDP 201.63/69.63 (8) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (9) QDP 201.63/69.63 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (11) YES 201.63/69.63 (12) QDP 201.63/69.63 (13) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (14) QDP 201.63/69.63 (15) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (16) QDP 201.63/69.63 (17) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (18) YES 201.63/69.63 (19) QDP 201.63/69.63 (20) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (21) QDP 201.63/69.63 (22) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (23) QDP 201.63/69.63 (24) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (25) YES 201.63/69.63 (26) QDP 201.63/69.63 (27) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (28) QDP 201.63/69.63 (29) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (30) QDP 201.63/69.63 (31) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (32) YES 201.63/69.63 (33) QDP 201.63/69.63 (34) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (35) QDP 201.63/69.63 (36) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (37) QDP 201.63/69.63 (38) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (39) YES 201.63/69.63 (40) QDP 201.63/69.63 (41) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (42) QDP 201.63/69.63 (43) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (44) QDP 201.63/69.63 (45) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (46) YES 201.63/69.63 (47) QDP 201.63/69.63 (48) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (49) QDP 201.63/69.63 (50) QReductionProof [EQUIVALENT, 1 ms] 201.63/69.63 (51) QDP 201.63/69.63 (52) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (53) YES 201.63/69.63 (54) QDP 201.63/69.63 (55) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (56) QDP 201.63/69.63 (57) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (58) QDP 201.63/69.63 (59) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (60) YES 201.63/69.63 (61) QDP 201.63/69.63 (62) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (63) QDP 201.63/69.63 (64) QReductionProof [EQUIVALENT, 2 ms] 201.63/69.63 (65) QDP 201.63/69.63 (66) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (67) YES 201.63/69.63 (68) QDP 201.63/69.63 (69) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (70) QDP 201.63/69.63 (71) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (72) QDP 201.63/69.63 (73) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (74) YES 201.63/69.63 (75) QDP 201.63/69.63 (76) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (77) QDP 201.63/69.63 (78) QReductionProof [EQUIVALENT, 1 ms] 201.63/69.63 (79) QDP 201.63/69.63 (80) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (81) YES 201.63/69.63 (82) QDP 201.63/69.63 (83) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (84) QDP 201.63/69.63 (85) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (86) QDP 201.63/69.63 (87) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (88) YES 201.63/69.63 (89) QDP 201.63/69.63 (90) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (91) QDP 201.63/69.63 (92) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (93) QDP 201.63/69.63 (94) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (95) YES 201.63/69.63 (96) QDP 201.63/69.63 (97) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (98) QDP 201.63/69.63 (99) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (100) QDP 201.63/69.63 (101) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (102) YES 201.63/69.63 (103) QDP 201.63/69.63 (104) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (105) QDP 201.63/69.63 (106) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (107) QDP 201.63/69.63 (108) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (109) YES 201.63/69.63 (110) QDP 201.63/69.63 (111) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (112) QDP 201.63/69.63 (113) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (114) QDP 201.63/69.63 (115) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (116) YES 201.63/69.63 (117) QDP 201.63/69.63 (118) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (119) QDP 201.63/69.63 (120) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (121) QDP 201.63/69.63 (122) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (123) YES 201.63/69.63 (124) QDP 201.63/69.63 (125) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (126) QDP 201.63/69.63 (127) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (128) QDP 201.63/69.63 (129) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (130) YES 201.63/69.63 (131) QDP 201.63/69.63 (132) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (133) QDP 201.63/69.63 (134) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (135) QDP 201.63/69.63 (136) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (137) YES 201.63/69.63 (138) QDP 201.63/69.63 (139) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (140) QDP 201.63/69.63 (141) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (142) QDP 201.63/69.63 (143) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (144) YES 201.63/69.63 (145) QDP 201.63/69.63 (146) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (147) QDP 201.63/69.63 (148) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (149) QDP 201.63/69.63 (150) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (151) YES 201.63/69.63 (152) QDP 201.63/69.63 (153) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (154) QDP 201.63/69.63 (155) QReductionProof [EQUIVALENT, 0 ms] 201.63/69.63 (156) QDP 201.63/69.63 (157) QDPSizeChangeProof [EQUIVALENT, 0 ms] 201.63/69.63 (158) YES 201.63/69.63 (159) QDP 201.63/69.63 (160) UsableRulesProof [EQUIVALENT, 0 ms] 201.63/69.63 (161) QDP 201.63/69.63 (162) QDPQMonotonicMRRProof [EQUIVALENT, 1011 ms] 201.63/69.63 (163) QDP 201.63/69.63 (164) QDPOrderProof [EQUIVALENT, 106 ms] 201.63/69.63 (165) QDP 201.63/69.63 (166) QDPOrderProof [EQUIVALENT, 776 ms] 201.63/69.63 (167) QDP 201.63/69.63 (168) QDPQMonotonicMRRProof [EQUIVALENT, 584 ms] 201.63/69.63 (169) QDP 201.63/69.63 (170) QDPQMonotonicMRRProof [EQUIVALENT, 542 ms] 201.63/69.63 (171) QDP 201.63/69.63 (172) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (173) QDP 201.63/69.63 (174) QDPOrderProof [EQUIVALENT, 890 ms] 201.63/69.63 (175) QDP 201.63/69.63 (176) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (177) QDP 201.63/69.63 (178) QDPOrderProof [EQUIVALENT, 619 ms] 201.63/69.63 (179) QDP 201.63/69.63 (180) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (181) QDP 201.63/69.63 (182) QDPOrderProof [EQUIVALENT, 592 ms] 201.63/69.63 (183) QDP 201.63/69.63 (184) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (185) QDP 201.63/69.63 (186) QDPOrderProof [EQUIVALENT, 568 ms] 201.63/69.63 (187) QDP 201.63/69.63 (188) QDPOrderProof [EQUIVALENT, 1020 ms] 201.63/69.63 (189) QDP 201.63/69.63 (190) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (191) QDP 201.63/69.63 (192) QDPOrderProof [EQUIVALENT, 855 ms] 201.63/69.63 (193) QDP 201.63/69.63 (194) QDPOrderProof [EQUIVALENT, 635 ms] 201.63/69.63 (195) QDP 201.63/69.63 (196) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (197) QDP 201.63/69.63 (198) QDPQMonotonicMRRProof [EQUIVALENT, 416 ms] 201.63/69.63 (199) QDP 201.63/69.63 (200) QDPQMonotonicMRRProof [EQUIVALENT, 456 ms] 201.63/69.63 (201) QDP 201.63/69.63 (202) QDPQMonotonicMRRProof [EQUIVALENT, 358 ms] 201.63/69.63 (203) QDP 201.63/69.63 (204) QDPQMonotonicMRRProof [EQUIVALENT, 292 ms] 201.63/69.63 (205) QDP 201.63/69.63 (206) QDPQMonotonicMRRProof [EQUIVALENT, 267 ms] 201.63/69.63 (207) QDP 201.63/69.63 (208) QDPQMonotonicMRRProof [EQUIVALENT, 341 ms] 201.63/69.63 (209) QDP 201.63/69.63 (210) QDPQMonotonicMRRProof [EQUIVALENT, 472 ms] 201.63/69.63 (211) QDP 201.63/69.63 (212) QDPOrderProof [EQUIVALENT, 505 ms] 201.63/69.63 (213) QDP 201.63/69.63 (214) QDPOrderProof [EQUIVALENT, 1018 ms] 201.63/69.63 (215) QDP 201.63/69.63 (216) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (217) QDP 201.63/69.63 (218) QDPOrderProof [EQUIVALENT, 425 ms] 201.63/69.63 (219) QDP 201.63/69.63 (220) QDPOrderProof [EQUIVALENT, 392 ms] 201.63/69.63 (221) QDP 201.63/69.63 (222) QDPOrderProof [EQUIVALENT, 364 ms] 201.63/69.63 (223) QDP 201.63/69.63 (224) QDPOrderProof [EQUIVALENT, 1128 ms] 201.63/69.63 (225) QDP 201.63/69.63 (226) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (227) QDP 201.63/69.63 (228) QDPOrderProof [EQUIVALENT, 439 ms] 201.63/69.63 (229) QDP 201.63/69.63 (230) QDPOrderProof [EQUIVALENT, 330 ms] 201.63/69.63 (231) QDP 201.63/69.63 (232) QDPOrderProof [EQUIVALENT, 375 ms] 201.63/69.63 (233) QDP 201.63/69.63 (234) QDPOrderProof [EQUIVALENT, 1862 ms] 201.63/69.63 (235) QDP 201.63/69.63 (236) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (237) QDP 201.63/69.63 (238) TransformationProof [EQUIVALENT, 0 ms] 201.63/69.63 (239) QDP 201.63/69.63 (240) QDPOrderProof [EQUIVALENT, 383 ms] 201.63/69.63 (241) QDP 201.63/69.63 (242) DependencyGraphProof [EQUIVALENT, 0 ms] 201.63/69.63 (243) QDP 201.63/69.63 (244) QDPOrderProof [EQUIVALENT, 55 ms] 201.63/69.63 (245) QDP 201.63/69.63 (246) PisEmptyProof [EQUIVALENT, 0 ms] 201.63/69.63 (247) YES 201.63/69.63 201.63/69.63 201.63/69.63 ---------------------------------------- 201.63/69.63 201.63/69.64 (0) 201.63/69.64 Obligation: 201.63/69.64 Q restricted rewrite system: 201.63/69.64 The TRS R consists of the following rules: 201.63/69.64 201.63/69.64 active(zeros) -> mark(cons(0, zeros)) 201.63/69.64 active(U11(tt)) -> mark(tt) 201.63/69.64 active(U21(tt)) -> mark(tt) 201.63/69.64 active(U31(tt)) -> mark(tt) 201.63/69.64 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.63/69.64 active(U42(tt)) -> mark(tt) 201.63/69.64 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.63/69.64 active(U52(tt)) -> mark(tt) 201.63/69.64 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.63/69.64 active(U62(tt)) -> mark(tt) 201.63/69.64 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.63/69.64 active(U72(tt, L)) -> mark(s(length(L))) 201.63/69.64 active(U81(tt)) -> mark(nil) 201.63/69.64 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.63/69.64 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.63/69.64 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.63/69.64 active(isNat(0)) -> mark(tt) 201.63/69.64 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.63/69.64 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.63/69.64 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.63/69.64 active(isNatIList(zeros)) -> mark(tt) 201.63/69.64 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.63/69.64 active(isNatList(nil)) -> mark(tt) 201.63/69.64 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.63/69.64 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.63/69.64 active(length(nil)) -> mark(0) 201.63/69.64 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.63/69.64 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.63/69.64 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.63/69.64 mark(zeros) -> active(zeros) 201.63/69.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.63/69.64 mark(0) -> active(0) 201.63/69.64 mark(U11(X)) -> active(U11(mark(X))) 201.63/69.64 mark(tt) -> active(tt) 201.63/69.64 mark(U21(X)) -> active(U21(mark(X))) 201.63/69.64 mark(U31(X)) -> active(U31(mark(X))) 201.63/69.64 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.63/69.64 mark(U42(X)) -> active(U42(mark(X))) 201.63/69.64 mark(isNatIList(X)) -> active(isNatIList(X)) 201.63/69.64 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.63/69.64 mark(U52(X)) -> active(U52(mark(X))) 201.63/69.64 mark(isNatList(X)) -> active(isNatList(X)) 201.63/69.64 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.63/69.64 mark(U62(X)) -> active(U62(mark(X))) 201.63/69.64 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.63/69.64 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.63/69.64 mark(isNat(X)) -> active(isNat(X)) 201.63/69.64 mark(s(X)) -> active(s(mark(X))) 201.63/69.64 mark(length(X)) -> active(length(mark(X))) 201.63/69.64 mark(U81(X)) -> active(U81(mark(X))) 201.63/69.64 mark(nil) -> active(nil) 201.63/69.64 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.63/69.64 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.63/69.64 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.63/69.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.63/69.64 cons(mark(X1), X2) -> cons(X1, X2) 201.63/69.64 cons(X1, mark(X2)) -> cons(X1, X2) 201.63/69.64 cons(active(X1), X2) -> cons(X1, X2) 201.63/69.64 cons(X1, active(X2)) -> cons(X1, X2) 201.63/69.64 U11(mark(X)) -> U11(X) 201.63/69.64 U11(active(X)) -> U11(X) 201.63/69.64 U21(mark(X)) -> U21(X) 201.63/69.64 U21(active(X)) -> U21(X) 201.63/69.64 U31(mark(X)) -> U31(X) 201.63/69.64 U31(active(X)) -> U31(X) 201.63/69.64 U41(mark(X1), X2) -> U41(X1, X2) 201.63/69.64 U41(X1, mark(X2)) -> U41(X1, X2) 201.63/69.64 U41(active(X1), X2) -> U41(X1, X2) 201.63/69.64 U41(X1, active(X2)) -> U41(X1, X2) 201.63/69.64 U42(mark(X)) -> U42(X) 201.63/69.64 U42(active(X)) -> U42(X) 201.63/69.64 isNatIList(mark(X)) -> isNatIList(X) 201.63/69.64 isNatIList(active(X)) -> isNatIList(X) 201.63/69.64 U51(mark(X1), X2) -> U51(X1, X2) 201.63/69.64 U51(X1, mark(X2)) -> U51(X1, X2) 201.63/69.64 U51(active(X1), X2) -> U51(X1, X2) 201.63/69.64 U51(X1, active(X2)) -> U51(X1, X2) 201.63/69.64 U52(mark(X)) -> U52(X) 201.63/69.64 U52(active(X)) -> U52(X) 201.63/69.64 isNatList(mark(X)) -> isNatList(X) 201.63/69.64 isNatList(active(X)) -> isNatList(X) 201.63/69.64 U61(mark(X1), X2) -> U61(X1, X2) 201.63/69.64 U61(X1, mark(X2)) -> U61(X1, X2) 201.63/69.64 U61(active(X1), X2) -> U61(X1, X2) 201.63/69.64 U61(X1, active(X2)) -> U61(X1, X2) 201.63/69.64 U62(mark(X)) -> U62(X) 201.63/69.64 U62(active(X)) -> U62(X) 201.63/69.64 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.63/69.64 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.63/69.64 U72(mark(X1), X2) -> U72(X1, X2) 201.63/69.64 U72(X1, mark(X2)) -> U72(X1, X2) 201.63/69.64 U72(active(X1), X2) -> U72(X1, X2) 201.63/69.64 U72(X1, active(X2)) -> U72(X1, X2) 201.63/69.64 isNat(mark(X)) -> isNat(X) 201.63/69.64 isNat(active(X)) -> isNat(X) 201.63/69.64 s(mark(X)) -> s(X) 201.63/69.64 s(active(X)) -> s(X) 201.63/69.64 length(mark(X)) -> length(X) 201.63/69.64 length(active(X)) -> length(X) 201.63/69.64 U81(mark(X)) -> U81(X) 201.63/69.64 U81(active(X)) -> U81(X) 201.63/69.64 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.63/69.64 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.63/69.64 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.63/69.64 take(mark(X1), X2) -> take(X1, X2) 201.63/69.64 take(X1, mark(X2)) -> take(X1, X2) 201.63/69.64 take(active(X1), X2) -> take(X1, X2) 201.63/69.64 take(X1, active(X2)) -> take(X1, X2) 201.63/69.64 201.63/69.64 The set Q consists of the following terms: 201.63/69.64 201.63/69.64 active(zeros) 201.63/69.64 active(U11(tt)) 201.63/69.64 active(U21(tt)) 201.63/69.64 active(U31(tt)) 201.63/69.64 active(U41(tt, x0)) 201.63/69.64 active(U42(tt)) 201.63/69.64 active(U51(tt, x0)) 201.63/69.64 active(U52(tt)) 201.63/69.64 active(U61(tt, x0)) 201.63/69.64 active(U62(tt)) 201.63/69.64 active(U71(tt, x0, x1)) 201.63/69.64 active(U72(tt, x0)) 201.63/69.64 active(U81(tt)) 201.63/69.64 active(U91(tt, x0, x1, x2)) 201.63/69.64 active(U92(tt, x0, x1, x2)) 201.63/69.64 active(U93(tt, x0, x1, x2)) 201.63/69.64 active(isNat(0)) 201.63/69.64 active(isNat(length(x0))) 201.63/69.64 active(isNat(s(x0))) 201.63/69.64 active(isNatIList(x0)) 201.63/69.64 active(isNatList(nil)) 201.63/69.64 active(isNatList(cons(x0, x1))) 201.63/69.64 active(isNatList(take(x0, x1))) 201.63/69.64 active(length(nil)) 201.63/69.64 active(length(cons(x0, x1))) 201.63/69.64 active(take(0, x0)) 201.63/69.64 active(take(s(x0), cons(x1, x2))) 201.63/69.64 mark(zeros) 201.63/69.64 mark(cons(x0, x1)) 201.63/69.64 mark(0) 201.63/69.64 mark(U11(x0)) 201.63/69.64 mark(tt) 201.63/69.64 mark(U21(x0)) 201.63/69.64 mark(U31(x0)) 201.63/69.64 mark(U41(x0, x1)) 201.63/69.64 mark(U42(x0)) 201.63/69.64 mark(isNatIList(x0)) 201.63/69.64 mark(U51(x0, x1)) 201.63/69.64 mark(U52(x0)) 201.63/69.64 mark(isNatList(x0)) 201.63/69.64 mark(U61(x0, x1)) 201.63/69.64 mark(U62(x0)) 201.63/69.64 mark(U71(x0, x1, x2)) 201.63/69.64 mark(U72(x0, x1)) 201.63/69.64 mark(isNat(x0)) 201.63/69.64 mark(s(x0)) 201.63/69.64 mark(length(x0)) 201.63/69.64 mark(U81(x0)) 201.63/69.64 mark(nil) 201.63/69.64 mark(U91(x0, x1, x2, x3)) 201.63/69.64 mark(U92(x0, x1, x2, x3)) 201.63/69.64 mark(U93(x0, x1, x2, x3)) 201.63/69.64 mark(take(x0, x1)) 201.63/69.64 cons(mark(x0), x1) 201.63/69.64 cons(x0, mark(x1)) 201.63/69.64 cons(active(x0), x1) 201.63/69.64 cons(x0, active(x1)) 201.63/69.64 U11(mark(x0)) 201.63/69.64 U11(active(x0)) 201.63/69.64 U21(mark(x0)) 201.63/69.64 U21(active(x0)) 201.63/69.64 U31(mark(x0)) 201.63/69.64 U31(active(x0)) 201.63/69.64 U41(mark(x0), x1) 201.63/69.64 U41(x0, mark(x1)) 201.63/69.64 U41(active(x0), x1) 201.63/69.64 U41(x0, active(x1)) 201.63/69.64 U42(mark(x0)) 201.63/69.64 U42(active(x0)) 201.63/69.64 isNatIList(mark(x0)) 201.63/69.64 isNatIList(active(x0)) 201.63/69.64 U51(mark(x0), x1) 201.63/69.64 U51(x0, mark(x1)) 201.63/69.64 U51(active(x0), x1) 201.63/69.64 U51(x0, active(x1)) 201.63/69.64 U52(mark(x0)) 201.63/69.64 U52(active(x0)) 201.63/69.64 isNatList(mark(x0)) 201.63/69.64 isNatList(active(x0)) 201.63/69.64 U61(mark(x0), x1) 201.63/69.64 U61(x0, mark(x1)) 201.63/69.64 U61(active(x0), x1) 201.63/69.64 U61(x0, active(x1)) 201.63/69.64 U62(mark(x0)) 201.63/69.64 U62(active(x0)) 201.63/69.64 U71(mark(x0), x1, x2) 201.63/69.64 U71(x0, mark(x1), x2) 201.63/69.64 U71(x0, x1, mark(x2)) 201.63/69.64 U71(active(x0), x1, x2) 201.63/69.64 U71(x0, active(x1), x2) 201.63/69.64 U71(x0, x1, active(x2)) 201.63/69.64 U72(mark(x0), x1) 201.63/69.64 U72(x0, mark(x1)) 201.63/69.64 U72(active(x0), x1) 201.63/69.64 U72(x0, active(x1)) 201.63/69.64 isNat(mark(x0)) 201.63/69.64 isNat(active(x0)) 201.63/69.64 s(mark(x0)) 201.63/69.64 s(active(x0)) 201.63/69.64 length(mark(x0)) 201.63/69.64 length(active(x0)) 201.63/69.64 U81(mark(x0)) 201.63/69.64 U81(active(x0)) 201.63/69.64 U91(mark(x0), x1, x2, x3) 201.63/69.64 U91(x0, mark(x1), x2, x3) 201.63/69.64 U91(x0, x1, mark(x2), x3) 201.63/69.64 U91(x0, x1, x2, mark(x3)) 201.63/69.64 U91(active(x0), x1, x2, x3) 201.63/69.64 U91(x0, active(x1), x2, x3) 201.63/69.64 U91(x0, x1, active(x2), x3) 201.63/69.64 U91(x0, x1, x2, active(x3)) 201.63/69.64 U92(mark(x0), x1, x2, x3) 201.63/69.64 U92(x0, mark(x1), x2, x3) 201.63/69.64 U92(x0, x1, mark(x2), x3) 201.63/69.64 U92(x0, x1, x2, mark(x3)) 201.63/69.64 U92(active(x0), x1, x2, x3) 201.63/69.64 U92(x0, active(x1), x2, x3) 201.63/69.64 U92(x0, x1, active(x2), x3) 201.63/69.64 U92(x0, x1, x2, active(x3)) 201.63/69.64 U93(mark(x0), x1, x2, x3) 201.63/69.64 U93(x0, mark(x1), x2, x3) 201.63/69.64 U93(x0, x1, mark(x2), x3) 201.63/69.64 U93(x0, x1, x2, mark(x3)) 201.63/69.64 U93(active(x0), x1, x2, x3) 201.63/69.64 U93(x0, active(x1), x2, x3) 201.63/69.64 U93(x0, x1, active(x2), x3) 201.63/69.64 U93(x0, x1, x2, active(x3)) 201.63/69.64 take(mark(x0), x1) 201.63/69.64 take(x0, mark(x1)) 201.63/69.64 take(active(x0), x1) 201.63/69.64 take(x0, active(x1)) 201.63/69.64 201.63/69.64 201.63/69.64 ---------------------------------------- 201.63/69.64 201.63/69.64 (1) DependencyPairsProof (EQUIVALENT) 201.63/69.64 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 201.63/69.64 ---------------------------------------- 201.63/69.64 201.63/69.64 (2) 201.63/69.64 Obligation: 201.63/69.64 Q DP problem: 201.63/69.64 The TRS P consists of the following rules: 201.63/69.64 201.63/69.64 ACTIVE(zeros) -> MARK(cons(0, zeros)) 201.63/69.64 ACTIVE(zeros) -> CONS(0, zeros) 201.63/69.64 ACTIVE(U11(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U21(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U31(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 201.63/69.64 ACTIVE(U41(tt, V2)) -> U42^1(isNatIList(V2)) 201.63/69.64 ACTIVE(U41(tt, V2)) -> ISNATILIST(V2) 201.63/69.64 ACTIVE(U42(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 201.63/69.64 ACTIVE(U51(tt, V2)) -> U52^1(isNatList(V2)) 201.63/69.64 ACTIVE(U51(tt, V2)) -> ISNATLIST(V2) 201.63/69.64 ACTIVE(U52(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 201.63/69.64 ACTIVE(U61(tt, V2)) -> U62^1(isNatIList(V2)) 201.63/69.64 ACTIVE(U61(tt, V2)) -> ISNATILIST(V2) 201.63/69.64 ACTIVE(U62(tt)) -> MARK(tt) 201.63/69.64 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 201.63/69.64 ACTIVE(U71(tt, L, N)) -> U72^1(isNat(N), L) 201.63/69.64 ACTIVE(U71(tt, L, N)) -> ISNAT(N) 201.63/69.64 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 201.63/69.64 ACTIVE(U72(tt, L)) -> S(length(L)) 201.63/69.64 ACTIVE(U72(tt, L)) -> LENGTH(L) 201.63/69.64 ACTIVE(U81(tt)) -> MARK(nil) 201.63/69.64 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 201.63/69.64 ACTIVE(U91(tt, IL, M, N)) -> U92^1(isNat(M), IL, M, N) 201.63/69.64 ACTIVE(U91(tt, IL, M, N)) -> ISNAT(M) 201.63/69.64 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 201.63/69.64 ACTIVE(U92(tt, IL, M, N)) -> U93^1(isNat(N), IL, M, N) 201.63/69.64 ACTIVE(U92(tt, IL, M, N)) -> ISNAT(N) 201.63/69.64 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 201.63/69.64 ACTIVE(U93(tt, IL, M, N)) -> CONS(N, take(M, IL)) 201.63/69.64 ACTIVE(U93(tt, IL, M, N)) -> TAKE(M, IL) 201.63/69.64 ACTIVE(isNat(0)) -> MARK(tt) 201.63/69.64 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 201.63/69.64 ACTIVE(isNat(length(V1))) -> U11^1(isNatList(V1)) 201.63/69.64 ACTIVE(isNat(length(V1))) -> ISNATLIST(V1) 201.63/69.64 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 201.63/69.64 ACTIVE(isNat(s(V1))) -> U21^1(isNat(V1)) 201.63/69.64 ACTIVE(isNat(s(V1))) -> ISNAT(V1) 201.63/69.64 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 201.63/69.64 ACTIVE(isNatIList(V)) -> U31^1(isNatList(V)) 201.63/69.64 ACTIVE(isNatIList(V)) -> ISNATLIST(V) 201.63/69.64 ACTIVE(isNatIList(zeros)) -> MARK(tt) 201.63/69.64 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 201.63/69.64 ACTIVE(isNatIList(cons(V1, V2))) -> U41^1(isNat(V1), V2) 201.63/69.64 ACTIVE(isNatIList(cons(V1, V2))) -> ISNAT(V1) 201.63/69.64 ACTIVE(isNatList(nil)) -> MARK(tt) 201.63/69.64 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 201.63/69.64 ACTIVE(isNatList(cons(V1, V2))) -> U51^1(isNat(V1), V2) 201.63/69.64 ACTIVE(isNatList(cons(V1, V2))) -> ISNAT(V1) 201.63/69.64 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 201.63/69.64 ACTIVE(isNatList(take(V1, V2))) -> U61^1(isNat(V1), V2) 201.63/69.64 ACTIVE(isNatList(take(V1, V2))) -> ISNAT(V1) 201.63/69.64 ACTIVE(length(nil)) -> MARK(0) 201.63/69.64 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 201.63/69.64 ACTIVE(length(cons(N, L))) -> U71^1(isNatList(L), L, N) 201.63/69.64 ACTIVE(length(cons(N, L))) -> ISNATLIST(L) 201.63/69.64 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 201.63/69.64 ACTIVE(take(0, IL)) -> U81^1(isNatIList(IL)) 201.63/69.64 ACTIVE(take(0, IL)) -> ISNATILIST(IL) 201.63/69.64 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 201.63/69.64 ACTIVE(take(s(M), cons(N, IL))) -> U91^1(isNatIList(IL), IL, M, N) 201.63/69.64 ACTIVE(take(s(M), cons(N, IL))) -> ISNATILIST(IL) 201.63/69.64 MARK(zeros) -> ACTIVE(zeros) 201.63/69.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 201.63/69.64 MARK(cons(X1, X2)) -> CONS(mark(X1), X2) 201.63/69.64 MARK(cons(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(0) -> ACTIVE(0) 201.63/69.64 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 201.63/69.64 MARK(U11(X)) -> U11^1(mark(X)) 201.63/69.64 MARK(U11(X)) -> MARK(X) 201.63/69.64 MARK(tt) -> ACTIVE(tt) 201.63/69.64 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 201.63/69.64 MARK(U21(X)) -> U21^1(mark(X)) 201.63/69.64 MARK(U21(X)) -> MARK(X) 201.63/69.64 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 201.63/69.64 MARK(U31(X)) -> U31^1(mark(X)) 201.63/69.64 MARK(U31(X)) -> MARK(X) 201.63/69.64 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 201.63/69.64 MARK(U41(X1, X2)) -> U41^1(mark(X1), X2) 201.63/69.64 MARK(U41(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 201.63/69.64 MARK(U42(X)) -> U42^1(mark(X)) 201.63/69.64 MARK(U42(X)) -> MARK(X) 201.63/69.64 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 201.63/69.64 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 201.63/69.64 MARK(U51(X1, X2)) -> U51^1(mark(X1), X2) 201.63/69.64 MARK(U51(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 201.63/69.64 MARK(U52(X)) -> U52^1(mark(X)) 201.63/69.64 MARK(U52(X)) -> MARK(X) 201.63/69.64 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 201.63/69.64 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 201.63/69.64 MARK(U61(X1, X2)) -> U61^1(mark(X1), X2) 201.63/69.64 MARK(U61(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(U62(X)) -> ACTIVE(U62(mark(X))) 201.63/69.64 MARK(U62(X)) -> U62^1(mark(X)) 201.63/69.64 MARK(U62(X)) -> MARK(X) 201.63/69.64 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 201.63/69.64 MARK(U71(X1, X2, X3)) -> U71^1(mark(X1), X2, X3) 201.63/69.64 MARK(U71(X1, X2, X3)) -> MARK(X1) 201.63/69.64 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 201.63/69.64 MARK(U72(X1, X2)) -> U72^1(mark(X1), X2) 201.63/69.64 MARK(U72(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(isNat(X)) -> ACTIVE(isNat(X)) 201.63/69.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 201.63/69.64 MARK(s(X)) -> S(mark(X)) 201.63/69.64 MARK(s(X)) -> MARK(X) 201.63/69.64 MARK(length(X)) -> ACTIVE(length(mark(X))) 201.63/69.64 MARK(length(X)) -> LENGTH(mark(X)) 201.63/69.64 MARK(length(X)) -> MARK(X) 201.63/69.64 MARK(U81(X)) -> ACTIVE(U81(mark(X))) 201.63/69.64 MARK(U81(X)) -> U81^1(mark(X)) 201.63/69.64 MARK(U81(X)) -> MARK(X) 201.63/69.64 MARK(nil) -> ACTIVE(nil) 201.63/69.64 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 201.63/69.64 MARK(U91(X1, X2, X3, X4)) -> U91^1(mark(X1), X2, X3, X4) 201.63/69.64 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 201.63/69.64 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 201.63/69.64 MARK(U92(X1, X2, X3, X4)) -> U92^1(mark(X1), X2, X3, X4) 201.63/69.64 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 201.63/69.64 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 201.63/69.64 MARK(U93(X1, X2, X3, X4)) -> U93^1(mark(X1), X2, X3, X4) 201.63/69.64 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 201.63/69.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 201.63/69.64 MARK(take(X1, X2)) -> TAKE(mark(X1), mark(X2)) 201.63/69.64 MARK(take(X1, X2)) -> MARK(X1) 201.63/69.64 MARK(take(X1, X2)) -> MARK(X2) 201.63/69.64 CONS(mark(X1), X2) -> CONS(X1, X2) 201.63/69.64 CONS(X1, mark(X2)) -> CONS(X1, X2) 201.63/69.64 CONS(active(X1), X2) -> CONS(X1, X2) 201.63/69.64 CONS(X1, active(X2)) -> CONS(X1, X2) 201.63/69.64 U11^1(mark(X)) -> U11^1(X) 201.63/69.64 U11^1(active(X)) -> U11^1(X) 201.63/69.64 U21^1(mark(X)) -> U21^1(X) 201.63/69.64 U21^1(active(X)) -> U21^1(X) 201.63/69.64 U31^1(mark(X)) -> U31^1(X) 201.63/69.64 U31^1(active(X)) -> U31^1(X) 201.63/69.64 U41^1(mark(X1), X2) -> U41^1(X1, X2) 201.63/69.64 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 201.63/69.64 U41^1(active(X1), X2) -> U41^1(X1, X2) 201.63/69.64 U41^1(X1, active(X2)) -> U41^1(X1, X2) 201.63/69.64 U42^1(mark(X)) -> U42^1(X) 201.63/69.64 U42^1(active(X)) -> U42^1(X) 201.63/69.64 ISNATILIST(mark(X)) -> ISNATILIST(X) 201.63/69.64 ISNATILIST(active(X)) -> ISNATILIST(X) 201.63/69.64 U51^1(mark(X1), X2) -> U51^1(X1, X2) 201.63/69.64 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 201.63/69.64 U51^1(active(X1), X2) -> U51^1(X1, X2) 201.63/69.64 U51^1(X1, active(X2)) -> U51^1(X1, X2) 201.63/69.64 U52^1(mark(X)) -> U52^1(X) 201.63/69.64 U52^1(active(X)) -> U52^1(X) 201.63/69.64 ISNATLIST(mark(X)) -> ISNATLIST(X) 201.63/69.64 ISNATLIST(active(X)) -> ISNATLIST(X) 201.63/69.64 U61^1(mark(X1), X2) -> U61^1(X1, X2) 201.63/69.64 U61^1(X1, mark(X2)) -> U61^1(X1, X2) 201.63/69.64 U61^1(active(X1), X2) -> U61^1(X1, X2) 201.63/69.64 U61^1(X1, active(X2)) -> U61^1(X1, X2) 201.63/69.64 U62^1(mark(X)) -> U62^1(X) 201.63/69.64 U62^1(active(X)) -> U62^1(X) 201.63/69.64 U71^1(mark(X1), X2, X3) -> U71^1(X1, X2, X3) 201.63/69.64 U71^1(X1, mark(X2), X3) -> U71^1(X1, X2, X3) 201.63/69.64 U71^1(X1, X2, mark(X3)) -> U71^1(X1, X2, X3) 201.63/69.64 U71^1(active(X1), X2, X3) -> U71^1(X1, X2, X3) 201.63/69.64 U71^1(X1, active(X2), X3) -> U71^1(X1, X2, X3) 201.63/69.64 U71^1(X1, X2, active(X3)) -> U71^1(X1, X2, X3) 201.63/69.64 U72^1(mark(X1), X2) -> U72^1(X1, X2) 201.63/69.64 U72^1(X1, mark(X2)) -> U72^1(X1, X2) 201.63/69.64 U72^1(active(X1), X2) -> U72^1(X1, X2) 201.63/69.64 U72^1(X1, active(X2)) -> U72^1(X1, X2) 201.63/69.64 ISNAT(mark(X)) -> ISNAT(X) 201.63/69.64 ISNAT(active(X)) -> ISNAT(X) 201.63/69.64 S(mark(X)) -> S(X) 201.63/69.64 S(active(X)) -> S(X) 201.63/69.64 LENGTH(mark(X)) -> LENGTH(X) 201.63/69.64 LENGTH(active(X)) -> LENGTH(X) 201.63/69.64 U81^1(mark(X)) -> U81^1(X) 201.63/69.64 U81^1(active(X)) -> U81^1(X) 201.63/69.64 U91^1(mark(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, mark(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, X2, mark(X3), X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, X2, X3, mark(X4)) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(active(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, active(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, X2, active(X3), X4) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U91^1(X1, X2, X3, active(X4)) -> U91^1(X1, X2, X3, X4) 201.63/69.64 U92^1(mark(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, mark(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, X2, mark(X3), X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, X2, X3, mark(X4)) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(active(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, active(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, X2, active(X3), X4) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U92^1(X1, X2, X3, active(X4)) -> U92^1(X1, X2, X3, X4) 201.63/69.64 U93^1(mark(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, mark(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, X2, mark(X3), X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, X2, X3, mark(X4)) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(active(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, active(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, X2, active(X3), X4) -> U93^1(X1, X2, X3, X4) 201.63/69.64 U93^1(X1, X2, X3, active(X4)) -> U93^1(X1, X2, X3, X4) 201.63/69.64 TAKE(mark(X1), X2) -> TAKE(X1, X2) 201.63/69.64 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 201.63/69.64 TAKE(active(X1), X2) -> TAKE(X1, X2) 201.63/69.64 TAKE(X1, active(X2)) -> TAKE(X1, X2) 201.63/69.64 201.63/69.64 The TRS R consists of the following rules: 201.63/69.64 201.63/69.64 active(zeros) -> mark(cons(0, zeros)) 201.63/69.64 active(U11(tt)) -> mark(tt) 201.63/69.64 active(U21(tt)) -> mark(tt) 201.63/69.64 active(U31(tt)) -> mark(tt) 201.63/69.64 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.63/69.64 active(U42(tt)) -> mark(tt) 201.63/69.64 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.63/69.64 active(U52(tt)) -> mark(tt) 201.63/69.64 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.63/69.64 active(U62(tt)) -> mark(tt) 201.63/69.64 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.63/69.64 active(U72(tt, L)) -> mark(s(length(L))) 201.63/69.64 active(U81(tt)) -> mark(nil) 201.63/69.64 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.63/69.64 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.63/69.64 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.63/69.64 active(isNat(0)) -> mark(tt) 201.63/69.64 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.63/69.64 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.63/69.64 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.63/69.64 active(isNatIList(zeros)) -> mark(tt) 201.63/69.64 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.63/69.64 active(isNatList(nil)) -> mark(tt) 201.63/69.64 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.63/69.64 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.63/69.64 active(length(nil)) -> mark(0) 201.63/69.64 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.63/69.64 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.63/69.64 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.63/69.64 mark(zeros) -> active(zeros) 201.63/69.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.63/69.64 mark(0) -> active(0) 201.63/69.64 mark(U11(X)) -> active(U11(mark(X))) 201.63/69.64 mark(tt) -> active(tt) 201.63/69.64 mark(U21(X)) -> active(U21(mark(X))) 201.63/69.64 mark(U31(X)) -> active(U31(mark(X))) 201.63/69.64 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.63/69.64 mark(U42(X)) -> active(U42(mark(X))) 201.63/69.64 mark(isNatIList(X)) -> active(isNatIList(X)) 201.63/69.64 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.63/69.64 mark(U52(X)) -> active(U52(mark(X))) 201.63/69.64 mark(isNatList(X)) -> active(isNatList(X)) 201.63/69.64 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.63/69.64 mark(U62(X)) -> active(U62(mark(X))) 201.63/69.64 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.63/69.64 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.63/69.64 mark(isNat(X)) -> active(isNat(X)) 201.63/69.64 mark(s(X)) -> active(s(mark(X))) 201.63/69.64 mark(length(X)) -> active(length(mark(X))) 201.63/69.64 mark(U81(X)) -> active(U81(mark(X))) 201.63/69.64 mark(nil) -> active(nil) 201.63/69.64 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.63/69.64 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.63/69.64 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.63/69.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.63/69.64 cons(mark(X1), X2) -> cons(X1, X2) 201.63/69.64 cons(X1, mark(X2)) -> cons(X1, X2) 201.63/69.64 cons(active(X1), X2) -> cons(X1, X2) 201.63/69.64 cons(X1, active(X2)) -> cons(X1, X2) 201.63/69.64 U11(mark(X)) -> U11(X) 201.63/69.64 U11(active(X)) -> U11(X) 201.63/69.64 U21(mark(X)) -> U21(X) 201.63/69.64 U21(active(X)) -> U21(X) 201.63/69.64 U31(mark(X)) -> U31(X) 201.63/69.64 U31(active(X)) -> U31(X) 201.63/69.64 U41(mark(X1), X2) -> U41(X1, X2) 201.63/69.64 U41(X1, mark(X2)) -> U41(X1, X2) 201.63/69.64 U41(active(X1), X2) -> U41(X1, X2) 201.63/69.64 U41(X1, active(X2)) -> U41(X1, X2) 201.63/69.64 U42(mark(X)) -> U42(X) 201.63/69.64 U42(active(X)) -> U42(X) 201.63/69.64 isNatIList(mark(X)) -> isNatIList(X) 201.63/69.64 isNatIList(active(X)) -> isNatIList(X) 201.63/69.64 U51(mark(X1), X2) -> U51(X1, X2) 201.63/69.64 U51(X1, mark(X2)) -> U51(X1, X2) 201.63/69.64 U51(active(X1), X2) -> U51(X1, X2) 201.63/69.64 U51(X1, active(X2)) -> U51(X1, X2) 201.63/69.64 U52(mark(X)) -> U52(X) 201.63/69.64 U52(active(X)) -> U52(X) 201.63/69.64 isNatList(mark(X)) -> isNatList(X) 201.63/69.64 isNatList(active(X)) -> isNatList(X) 201.63/69.64 U61(mark(X1), X2) -> U61(X1, X2) 201.63/69.64 U61(X1, mark(X2)) -> U61(X1, X2) 201.63/69.64 U61(active(X1), X2) -> U61(X1, X2) 201.63/69.64 U61(X1, active(X2)) -> U61(X1, X2) 201.63/69.64 U62(mark(X)) -> U62(X) 201.63/69.64 U62(active(X)) -> U62(X) 201.63/69.64 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.63/69.64 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.63/69.64 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.63/69.64 U72(mark(X1), X2) -> U72(X1, X2) 201.63/69.64 U72(X1, mark(X2)) -> U72(X1, X2) 201.63/69.64 U72(active(X1), X2) -> U72(X1, X2) 201.63/69.64 U72(X1, active(X2)) -> U72(X1, X2) 201.63/69.64 isNat(mark(X)) -> isNat(X) 201.63/69.64 isNat(active(X)) -> isNat(X) 201.63/69.64 s(mark(X)) -> s(X) 201.63/69.64 s(active(X)) -> s(X) 201.63/69.64 length(mark(X)) -> length(X) 201.63/69.64 length(active(X)) -> length(X) 201.63/69.64 U81(mark(X)) -> U81(X) 201.63/69.64 U81(active(X)) -> U81(X) 201.63/69.64 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.64 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.63/69.64 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.64 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.63/69.64 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.64 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.63/69.64 take(mark(X1), X2) -> take(X1, X2) 201.63/69.64 take(X1, mark(X2)) -> take(X1, X2) 201.63/69.64 take(active(X1), X2) -> take(X1, X2) 201.63/69.64 take(X1, active(X2)) -> take(X1, X2) 201.63/69.64 201.63/69.64 The set Q consists of the following terms: 201.63/69.64 201.63/69.64 active(zeros) 201.63/69.64 active(U11(tt)) 201.63/69.64 active(U21(tt)) 201.63/69.64 active(U31(tt)) 201.63/69.64 active(U41(tt, x0)) 201.63/69.64 active(U42(tt)) 201.63/69.64 active(U51(tt, x0)) 201.63/69.64 active(U52(tt)) 201.63/69.64 active(U61(tt, x0)) 201.63/69.64 active(U62(tt)) 201.63/69.64 active(U71(tt, x0, x1)) 201.63/69.64 active(U72(tt, x0)) 201.63/69.64 active(U81(tt)) 201.63/69.64 active(U91(tt, x0, x1, x2)) 201.63/69.64 active(U92(tt, x0, x1, x2)) 201.63/69.64 active(U93(tt, x0, x1, x2)) 201.63/69.64 active(isNat(0)) 201.63/69.64 active(isNat(length(x0))) 201.63/69.64 active(isNat(s(x0))) 201.63/69.64 active(isNatIList(x0)) 201.63/69.64 active(isNatList(nil)) 201.63/69.64 active(isNatList(cons(x0, x1))) 201.63/69.64 active(isNatList(take(x0, x1))) 201.63/69.64 active(length(nil)) 201.63/69.65 active(length(cons(x0, x1))) 201.63/69.65 active(take(0, x0)) 201.63/69.65 active(take(s(x0), cons(x1, x2))) 201.63/69.65 mark(zeros) 201.63/69.65 mark(cons(x0, x1)) 201.63/69.65 mark(0) 201.63/69.65 mark(U11(x0)) 201.63/69.65 mark(tt) 201.63/69.65 mark(U21(x0)) 201.63/69.65 mark(U31(x0)) 201.63/69.65 mark(U41(x0, x1)) 201.63/69.65 mark(U42(x0)) 201.63/69.65 mark(isNatIList(x0)) 201.63/69.65 mark(U51(x0, x1)) 201.63/69.65 mark(U52(x0)) 201.63/69.65 mark(isNatList(x0)) 201.63/69.65 mark(U61(x0, x1)) 201.63/69.65 mark(U62(x0)) 201.63/69.65 mark(U71(x0, x1, x2)) 201.63/69.65 mark(U72(x0, x1)) 201.63/69.65 mark(isNat(x0)) 201.63/69.65 mark(s(x0)) 201.63/69.65 mark(length(x0)) 201.63/69.65 mark(U81(x0)) 201.63/69.65 mark(nil) 201.63/69.65 mark(U91(x0, x1, x2, x3)) 201.63/69.65 mark(U92(x0, x1, x2, x3)) 201.63/69.65 mark(U93(x0, x1, x2, x3)) 201.63/69.65 mark(take(x0, x1)) 201.63/69.65 cons(mark(x0), x1) 201.63/69.65 cons(x0, mark(x1)) 201.63/69.65 cons(active(x0), x1) 201.63/69.65 cons(x0, active(x1)) 201.63/69.65 U11(mark(x0)) 201.63/69.65 U11(active(x0)) 201.63/69.65 U21(mark(x0)) 201.63/69.65 U21(active(x0)) 201.63/69.65 U31(mark(x0)) 201.63/69.65 U31(active(x0)) 201.63/69.65 U41(mark(x0), x1) 201.63/69.65 U41(x0, mark(x1)) 201.63/69.65 U41(active(x0), x1) 201.63/69.65 U41(x0, active(x1)) 201.63/69.65 U42(mark(x0)) 201.63/69.65 U42(active(x0)) 201.63/69.65 isNatIList(mark(x0)) 201.63/69.65 isNatIList(active(x0)) 201.63/69.65 U51(mark(x0), x1) 201.63/69.65 U51(x0, mark(x1)) 201.63/69.65 U51(active(x0), x1) 201.63/69.65 U51(x0, active(x1)) 201.63/69.65 U52(mark(x0)) 201.63/69.65 U52(active(x0)) 201.63/69.65 isNatList(mark(x0)) 201.63/69.65 isNatList(active(x0)) 201.63/69.65 U61(mark(x0), x1) 201.63/69.65 U61(x0, mark(x1)) 201.63/69.65 U61(active(x0), x1) 201.63/69.65 U61(x0, active(x1)) 201.63/69.65 U62(mark(x0)) 201.63/69.65 U62(active(x0)) 201.63/69.65 U71(mark(x0), x1, x2) 201.63/69.65 U71(x0, mark(x1), x2) 201.63/69.65 U71(x0, x1, mark(x2)) 201.63/69.65 U71(active(x0), x1, x2) 201.63/69.65 U71(x0, active(x1), x2) 201.63/69.65 U71(x0, x1, active(x2)) 201.63/69.65 U72(mark(x0), x1) 201.63/69.65 U72(x0, mark(x1)) 201.63/69.65 U72(active(x0), x1) 201.63/69.65 U72(x0, active(x1)) 201.63/69.65 isNat(mark(x0)) 201.63/69.65 isNat(active(x0)) 201.63/69.65 s(mark(x0)) 201.63/69.65 s(active(x0)) 201.63/69.65 length(mark(x0)) 201.63/69.65 length(active(x0)) 201.63/69.65 U81(mark(x0)) 201.63/69.65 U81(active(x0)) 201.63/69.65 U91(mark(x0), x1, x2, x3) 201.63/69.65 U91(x0, mark(x1), x2, x3) 201.63/69.65 U91(x0, x1, mark(x2), x3) 201.63/69.65 U91(x0, x1, x2, mark(x3)) 201.63/69.65 U91(active(x0), x1, x2, x3) 201.63/69.65 U91(x0, active(x1), x2, x3) 201.63/69.65 U91(x0, x1, active(x2), x3) 201.63/69.65 U91(x0, x1, x2, active(x3)) 201.63/69.65 U92(mark(x0), x1, x2, x3) 201.63/69.65 U92(x0, mark(x1), x2, x3) 201.63/69.65 U92(x0, x1, mark(x2), x3) 201.63/69.65 U92(x0, x1, x2, mark(x3)) 201.63/69.65 U92(active(x0), x1, x2, x3) 201.63/69.65 U92(x0, active(x1), x2, x3) 201.63/69.65 U92(x0, x1, active(x2), x3) 201.63/69.65 U92(x0, x1, x2, active(x3)) 201.63/69.65 U93(mark(x0), x1, x2, x3) 201.63/69.65 U93(x0, mark(x1), x2, x3) 201.63/69.65 U93(x0, x1, mark(x2), x3) 201.63/69.65 U93(x0, x1, x2, mark(x3)) 201.63/69.65 U93(active(x0), x1, x2, x3) 201.63/69.65 U93(x0, active(x1), x2, x3) 201.63/69.65 U93(x0, x1, active(x2), x3) 201.63/69.65 U93(x0, x1, x2, active(x3)) 201.63/69.65 take(mark(x0), x1) 201.63/69.65 take(x0, mark(x1)) 201.63/69.65 take(active(x0), x1) 201.63/69.65 take(x0, active(x1)) 201.63/69.65 201.63/69.65 We have to consider all minimal (P,Q,R)-chains. 201.63/69.65 ---------------------------------------- 201.63/69.65 201.63/69.65 (3) DependencyGraphProof (EQUIVALENT) 201.63/69.65 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 23 SCCs with 68 less nodes. 201.63/69.65 ---------------------------------------- 201.63/69.65 201.63/69.65 (4) 201.63/69.65 Complex Obligation (AND) 201.63/69.65 201.63/69.65 ---------------------------------------- 201.63/69.65 201.63/69.65 (5) 201.63/69.65 Obligation: 201.63/69.65 Q DP problem: 201.63/69.65 The TRS P consists of the following rules: 201.63/69.65 201.63/69.65 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 201.63/69.65 TAKE(mark(X1), X2) -> TAKE(X1, X2) 201.63/69.65 TAKE(active(X1), X2) -> TAKE(X1, X2) 201.63/69.65 TAKE(X1, active(X2)) -> TAKE(X1, X2) 201.63/69.65 201.63/69.65 The TRS R consists of the following rules: 201.63/69.65 201.63/69.65 active(zeros) -> mark(cons(0, zeros)) 201.63/69.65 active(U11(tt)) -> mark(tt) 201.63/69.65 active(U21(tt)) -> mark(tt) 201.63/69.65 active(U31(tt)) -> mark(tt) 201.63/69.65 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.63/69.65 active(U42(tt)) -> mark(tt) 201.63/69.65 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.63/69.65 active(U52(tt)) -> mark(tt) 201.63/69.65 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.63/69.65 active(U62(tt)) -> mark(tt) 201.63/69.65 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.63/69.65 active(U72(tt, L)) -> mark(s(length(L))) 201.63/69.65 active(U81(tt)) -> mark(nil) 201.63/69.65 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.63/69.65 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.63/69.65 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.63/69.65 active(isNat(0)) -> mark(tt) 201.63/69.65 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.63/69.65 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.63/69.65 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.63/69.65 active(isNatIList(zeros)) -> mark(tt) 201.63/69.65 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.63/69.65 active(isNatList(nil)) -> mark(tt) 201.63/69.65 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.63/69.65 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.63/69.65 active(length(nil)) -> mark(0) 201.63/69.65 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.63/69.65 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.63/69.65 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.63/69.65 mark(zeros) -> active(zeros) 201.63/69.65 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.63/69.65 mark(0) -> active(0) 201.63/69.65 mark(U11(X)) -> active(U11(mark(X))) 201.63/69.65 mark(tt) -> active(tt) 201.63/69.65 mark(U21(X)) -> active(U21(mark(X))) 201.63/69.65 mark(U31(X)) -> active(U31(mark(X))) 201.63/69.65 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.63/69.65 mark(U42(X)) -> active(U42(mark(X))) 201.63/69.65 mark(isNatIList(X)) -> active(isNatIList(X)) 201.63/69.65 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.63/69.65 mark(U52(X)) -> active(U52(mark(X))) 201.63/69.65 mark(isNatList(X)) -> active(isNatList(X)) 201.63/69.65 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.63/69.65 mark(U62(X)) -> active(U62(mark(X))) 201.63/69.65 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.63/69.65 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.63/69.65 mark(isNat(X)) -> active(isNat(X)) 201.63/69.65 mark(s(X)) -> active(s(mark(X))) 201.63/69.65 mark(length(X)) -> active(length(mark(X))) 201.63/69.65 mark(U81(X)) -> active(U81(mark(X))) 201.63/69.65 mark(nil) -> active(nil) 201.63/69.65 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.63/69.65 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.63/69.65 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.63/69.65 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.63/69.65 cons(mark(X1), X2) -> cons(X1, X2) 201.63/69.65 cons(X1, mark(X2)) -> cons(X1, X2) 201.63/69.65 cons(active(X1), X2) -> cons(X1, X2) 201.63/69.65 cons(X1, active(X2)) -> cons(X1, X2) 201.63/69.65 U11(mark(X)) -> U11(X) 201.63/69.65 U11(active(X)) -> U11(X) 201.63/69.65 U21(mark(X)) -> U21(X) 201.63/69.65 U21(active(X)) -> U21(X) 201.63/69.65 U31(mark(X)) -> U31(X) 201.63/69.65 U31(active(X)) -> U31(X) 201.63/69.65 U41(mark(X1), X2) -> U41(X1, X2) 201.63/69.65 U41(X1, mark(X2)) -> U41(X1, X2) 201.63/69.65 U41(active(X1), X2) -> U41(X1, X2) 201.63/69.65 U41(X1, active(X2)) -> U41(X1, X2) 201.63/69.65 U42(mark(X)) -> U42(X) 201.63/69.65 U42(active(X)) -> U42(X) 201.63/69.65 isNatIList(mark(X)) -> isNatIList(X) 201.63/69.65 isNatIList(active(X)) -> isNatIList(X) 201.63/69.65 U51(mark(X1), X2) -> U51(X1, X2) 201.63/69.65 U51(X1, mark(X2)) -> U51(X1, X2) 201.63/69.65 U51(active(X1), X2) -> U51(X1, X2) 201.63/69.65 U51(X1, active(X2)) -> U51(X1, X2) 201.63/69.65 U52(mark(X)) -> U52(X) 201.63/69.65 U52(active(X)) -> U52(X) 201.63/69.65 isNatList(mark(X)) -> isNatList(X) 201.63/69.65 isNatList(active(X)) -> isNatList(X) 201.63/69.65 U61(mark(X1), X2) -> U61(X1, X2) 201.63/69.65 U61(X1, mark(X2)) -> U61(X1, X2) 201.63/69.65 U61(active(X1), X2) -> U61(X1, X2) 201.63/69.65 U61(X1, active(X2)) -> U61(X1, X2) 201.63/69.65 U62(mark(X)) -> U62(X) 201.63/69.65 U62(active(X)) -> U62(X) 201.63/69.65 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.65 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.63/69.65 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.63/69.65 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.63/69.65 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.63/69.65 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.63/69.65 U72(mark(X1), X2) -> U72(X1, X2) 201.63/69.65 U72(X1, mark(X2)) -> U72(X1, X2) 201.63/69.65 U72(active(X1), X2) -> U72(X1, X2) 201.63/69.65 U72(X1, active(X2)) -> U72(X1, X2) 201.63/69.65 isNat(mark(X)) -> isNat(X) 201.63/69.65 isNat(active(X)) -> isNat(X) 201.63/69.65 s(mark(X)) -> s(X) 201.63/69.65 s(active(X)) -> s(X) 201.63/69.65 length(mark(X)) -> length(X) 201.63/69.65 length(active(X)) -> length(X) 201.63/69.65 U81(mark(X)) -> U81(X) 201.63/69.65 U81(active(X)) -> U81(X) 201.63/69.65 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.63/69.65 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.63/69.65 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.63/69.65 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.63/69.65 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.63/69.65 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.63/69.65 take(mark(X1), X2) -> take(X1, X2) 201.63/69.65 take(X1, mark(X2)) -> take(X1, X2) 201.63/69.65 take(active(X1), X2) -> take(X1, X2) 201.63/69.65 take(X1, active(X2)) -> take(X1, X2) 201.63/69.65 201.63/69.65 The set Q consists of the following terms: 201.63/69.65 201.63/69.65 active(zeros) 201.63/69.65 active(U11(tt)) 201.63/69.65 active(U21(tt)) 201.63/69.65 active(U31(tt)) 201.63/69.65 active(U41(tt, x0)) 201.63/69.65 active(U42(tt)) 201.63/69.65 active(U51(tt, x0)) 201.63/69.65 active(U52(tt)) 201.63/69.65 active(U61(tt, x0)) 201.63/69.65 active(U62(tt)) 201.63/69.65 active(U71(tt, x0, x1)) 201.63/69.65 active(U72(tt, x0)) 201.63/69.65 active(U81(tt)) 201.63/69.65 active(U91(tt, x0, x1, x2)) 201.63/69.65 active(U92(tt, x0, x1, x2)) 201.63/69.65 active(U93(tt, x0, x1, x2)) 201.63/69.65 active(isNat(0)) 201.63/69.65 active(isNat(length(x0))) 201.63/69.65 active(isNat(s(x0))) 201.63/69.65 active(isNatIList(x0)) 201.63/69.65 active(isNatList(nil)) 201.63/69.65 active(isNatList(cons(x0, x1))) 201.63/69.65 active(isNatList(take(x0, x1))) 201.63/69.65 active(length(nil)) 201.63/69.65 active(length(cons(x0, x1))) 201.63/69.65 active(take(0, x0)) 201.63/69.65 active(take(s(x0), cons(x1, x2))) 201.63/69.65 mark(zeros) 201.63/69.65 mark(cons(x0, x1)) 201.63/69.65 mark(0) 201.63/69.65 mark(U11(x0)) 201.63/69.65 mark(tt) 201.63/69.65 mark(U21(x0)) 201.63/69.65 mark(U31(x0)) 201.63/69.65 mark(U41(x0, x1)) 201.63/69.65 mark(U42(x0)) 201.63/69.65 mark(isNatIList(x0)) 201.63/69.65 mark(U51(x0, x1)) 201.63/69.65 mark(U52(x0)) 201.63/69.65 mark(isNatList(x0)) 201.63/69.65 mark(U61(x0, x1)) 201.63/69.65 mark(U62(x0)) 201.63/69.65 mark(U71(x0, x1, x2)) 201.63/69.65 mark(U72(x0, x1)) 201.63/69.65 mark(isNat(x0)) 201.63/69.65 mark(s(x0)) 201.63/69.65 mark(length(x0)) 201.63/69.65 mark(U81(x0)) 201.63/69.65 mark(nil) 201.63/69.65 mark(U91(x0, x1, x2, x3)) 201.63/69.65 mark(U92(x0, x1, x2, x3)) 201.63/69.65 mark(U93(x0, x1, x2, x3)) 201.63/69.65 mark(take(x0, x1)) 201.63/69.65 cons(mark(x0), x1) 201.63/69.65 cons(x0, mark(x1)) 201.63/69.65 cons(active(x0), x1) 201.63/69.65 cons(x0, active(x1)) 201.63/69.65 U11(mark(x0)) 201.63/69.65 U11(active(x0)) 201.63/69.65 U21(mark(x0)) 201.63/69.65 U21(active(x0)) 201.63/69.65 U31(mark(x0)) 201.63/69.65 U31(active(x0)) 201.63/69.65 U41(mark(x0), x1) 201.63/69.65 U41(x0, mark(x1)) 201.63/69.65 U41(active(x0), x1) 201.63/69.65 U41(x0, active(x1)) 201.63/69.65 U42(mark(x0)) 201.63/69.65 U42(active(x0)) 201.63/69.65 isNatIList(mark(x0)) 201.63/69.65 isNatIList(active(x0)) 201.63/69.65 U51(mark(x0), x1) 201.63/69.65 U51(x0, mark(x1)) 201.63/69.65 U51(active(x0), x1) 201.63/69.65 U51(x0, active(x1)) 201.63/69.65 U52(mark(x0)) 201.63/69.65 U52(active(x0)) 201.63/69.65 isNatList(mark(x0)) 201.63/69.65 isNatList(active(x0)) 201.63/69.65 U61(mark(x0), x1) 201.63/69.65 U61(x0, mark(x1)) 201.63/69.65 U61(active(x0), x1) 201.63/69.65 U61(x0, active(x1)) 201.63/69.65 U62(mark(x0)) 201.63/69.65 U62(active(x0)) 201.63/69.65 U71(mark(x0), x1, x2) 201.63/69.65 U71(x0, mark(x1), x2) 201.63/69.65 U71(x0, x1, mark(x2)) 201.63/69.65 U71(active(x0), x1, x2) 201.63/69.65 U71(x0, active(x1), x2) 201.63/69.65 U71(x0, x1, active(x2)) 201.63/69.65 U72(mark(x0), x1) 201.63/69.65 U72(x0, mark(x1)) 201.63/69.65 U72(active(x0), x1) 201.63/69.65 U72(x0, active(x1)) 201.63/69.65 isNat(mark(x0)) 201.63/69.65 isNat(active(x0)) 201.63/69.65 s(mark(x0)) 201.63/69.65 s(active(x0)) 201.63/69.65 length(mark(x0)) 201.63/69.65 length(active(x0)) 201.63/69.65 U81(mark(x0)) 201.63/69.65 U81(active(x0)) 201.63/69.65 U91(mark(x0), x1, x2, x3) 201.63/69.65 U91(x0, mark(x1), x2, x3) 201.63/69.65 U91(x0, x1, mark(x2), x3) 201.63/69.65 U91(x0, x1, x2, mark(x3)) 201.63/69.65 U91(active(x0), x1, x2, x3) 201.63/69.65 U91(x0, active(x1), x2, x3) 201.63/69.65 U91(x0, x1, active(x2), x3) 201.63/69.65 U91(x0, x1, x2, active(x3)) 201.63/69.65 U92(mark(x0), x1, x2, x3) 201.63/69.65 U92(x0, mark(x1), x2, x3) 201.63/69.65 U92(x0, x1, mark(x2), x3) 201.63/69.65 U92(x0, x1, x2, mark(x3)) 201.63/69.65 U92(active(x0), x1, x2, x3) 201.63/69.65 U92(x0, active(x1), x2, x3) 201.63/69.65 U92(x0, x1, active(x2), x3) 201.63/69.65 U92(x0, x1, x2, active(x3)) 201.63/69.65 U93(mark(x0), x1, x2, x3) 201.63/69.65 U93(x0, mark(x1), x2, x3) 201.63/69.65 U93(x0, x1, mark(x2), x3) 201.63/69.65 U93(x0, x1, x2, mark(x3)) 201.63/69.65 U93(active(x0), x1, x2, x3) 201.63/69.65 U93(x0, active(x1), x2, x3) 201.63/69.65 U93(x0, x1, active(x2), x3) 201.63/69.65 U93(x0, x1, x2, active(x3)) 201.63/69.65 take(mark(x0), x1) 201.63/69.65 take(x0, mark(x1)) 201.63/69.65 take(active(x0), x1) 201.63/69.65 take(x0, active(x1)) 201.63/69.65 201.63/69.65 We have to consider all minimal (P,Q,R)-chains. 201.63/69.65 ---------------------------------------- 201.63/69.65 201.63/69.65 (6) UsableRulesProof (EQUIVALENT) 201.63/69.65 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.63/69.65 ---------------------------------------- 201.63/69.65 201.63/69.65 (7) 201.63/69.65 Obligation: 201.63/69.65 Q DP problem: 201.63/69.65 The TRS P consists of the following rules: 201.63/69.65 201.63/69.65 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 201.63/69.65 TAKE(mark(X1), X2) -> TAKE(X1, X2) 201.63/69.65 TAKE(active(X1), X2) -> TAKE(X1, X2) 201.63/69.65 TAKE(X1, active(X2)) -> TAKE(X1, X2) 201.63/69.65 201.63/69.65 R is empty. 201.63/69.65 The set Q consists of the following terms: 201.63/69.65 201.63/69.65 active(zeros) 201.63/69.65 active(U11(tt)) 201.63/69.65 active(U21(tt)) 201.63/69.65 active(U31(tt)) 201.63/69.65 active(U41(tt, x0)) 201.63/69.65 active(U42(tt)) 201.63/69.65 active(U51(tt, x0)) 201.63/69.65 active(U52(tt)) 201.63/69.65 active(U61(tt, x0)) 201.63/69.65 active(U62(tt)) 201.63/69.65 active(U71(tt, x0, x1)) 201.63/69.65 active(U72(tt, x0)) 201.63/69.65 active(U81(tt)) 201.63/69.65 active(U91(tt, x0, x1, x2)) 201.63/69.65 active(U92(tt, x0, x1, x2)) 201.63/69.65 active(U93(tt, x0, x1, x2)) 201.63/69.65 active(isNat(0)) 201.63/69.65 active(isNat(length(x0))) 201.63/69.65 active(isNat(s(x0))) 201.63/69.65 active(isNatIList(x0)) 201.63/69.65 active(isNatList(nil)) 201.63/69.65 active(isNatList(cons(x0, x1))) 201.63/69.65 active(isNatList(take(x0, x1))) 201.63/69.65 active(length(nil)) 201.63/69.65 active(length(cons(x0, x1))) 201.63/69.65 active(take(0, x0)) 201.63/69.65 active(take(s(x0), cons(x1, x2))) 201.63/69.65 mark(zeros) 201.63/69.65 mark(cons(x0, x1)) 201.63/69.65 mark(0) 201.63/69.65 mark(U11(x0)) 201.63/69.65 mark(tt) 201.63/69.65 mark(U21(x0)) 201.90/69.65 mark(U31(x0)) 201.90/69.65 mark(U41(x0, x1)) 201.90/69.65 mark(U42(x0)) 201.90/69.65 mark(isNatIList(x0)) 201.90/69.65 mark(U51(x0, x1)) 201.90/69.65 mark(U52(x0)) 201.90/69.65 mark(isNatList(x0)) 201.90/69.65 mark(U61(x0, x1)) 201.90/69.65 mark(U62(x0)) 201.90/69.65 mark(U71(x0, x1, x2)) 201.90/69.65 mark(U72(x0, x1)) 201.90/69.65 mark(isNat(x0)) 201.90/69.65 mark(s(x0)) 201.90/69.65 mark(length(x0)) 201.90/69.65 mark(U81(x0)) 201.90/69.65 mark(nil) 201.90/69.65 mark(U91(x0, x1, x2, x3)) 201.90/69.65 mark(U92(x0, x1, x2, x3)) 201.90/69.65 mark(U93(x0, x1, x2, x3)) 201.90/69.65 mark(take(x0, x1)) 201.90/69.65 cons(mark(x0), x1) 201.90/69.65 cons(x0, mark(x1)) 201.90/69.65 cons(active(x0), x1) 201.90/69.65 cons(x0, active(x1)) 201.90/69.65 U11(mark(x0)) 201.90/69.65 U11(active(x0)) 201.90/69.65 U21(mark(x0)) 201.90/69.65 U21(active(x0)) 201.90/69.65 U31(mark(x0)) 201.90/69.65 U31(active(x0)) 201.90/69.65 U41(mark(x0), x1) 201.90/69.65 U41(x0, mark(x1)) 201.90/69.65 U41(active(x0), x1) 201.90/69.65 U41(x0, active(x1)) 201.90/69.65 U42(mark(x0)) 201.90/69.65 U42(active(x0)) 201.90/69.65 isNatIList(mark(x0)) 201.90/69.65 isNatIList(active(x0)) 201.90/69.65 U51(mark(x0), x1) 201.90/69.65 U51(x0, mark(x1)) 201.90/69.65 U51(active(x0), x1) 201.90/69.65 U51(x0, active(x1)) 201.90/69.65 U52(mark(x0)) 201.90/69.65 U52(active(x0)) 201.90/69.65 isNatList(mark(x0)) 201.90/69.65 isNatList(active(x0)) 201.90/69.65 U61(mark(x0), x1) 201.90/69.65 U61(x0, mark(x1)) 201.90/69.65 U61(active(x0), x1) 201.90/69.65 U61(x0, active(x1)) 201.90/69.65 U62(mark(x0)) 201.90/69.65 U62(active(x0)) 201.90/69.65 U71(mark(x0), x1, x2) 201.90/69.65 U71(x0, mark(x1), x2) 201.90/69.65 U71(x0, x1, mark(x2)) 201.90/69.65 U71(active(x0), x1, x2) 201.90/69.65 U71(x0, active(x1), x2) 201.90/69.65 U71(x0, x1, active(x2)) 201.90/69.65 U72(mark(x0), x1) 201.90/69.65 U72(x0, mark(x1)) 201.90/69.65 U72(active(x0), x1) 201.90/69.65 U72(x0, active(x1)) 201.90/69.65 isNat(mark(x0)) 201.90/69.65 isNat(active(x0)) 201.90/69.65 s(mark(x0)) 201.90/69.65 s(active(x0)) 201.90/69.65 length(mark(x0)) 201.90/69.65 length(active(x0)) 201.90/69.65 U81(mark(x0)) 201.90/69.65 U81(active(x0)) 201.90/69.65 U91(mark(x0), x1, x2, x3) 201.90/69.65 U91(x0, mark(x1), x2, x3) 201.90/69.65 U91(x0, x1, mark(x2), x3) 201.90/69.65 U91(x0, x1, x2, mark(x3)) 201.90/69.65 U91(active(x0), x1, x2, x3) 201.90/69.65 U91(x0, active(x1), x2, x3) 201.90/69.65 U91(x0, x1, active(x2), x3) 201.90/69.65 U91(x0, x1, x2, active(x3)) 201.90/69.65 U92(mark(x0), x1, x2, x3) 201.90/69.65 U92(x0, mark(x1), x2, x3) 201.90/69.65 U92(x0, x1, mark(x2), x3) 201.90/69.65 U92(x0, x1, x2, mark(x3)) 201.90/69.65 U92(active(x0), x1, x2, x3) 201.90/69.65 U92(x0, active(x1), x2, x3) 201.90/69.65 U92(x0, x1, active(x2), x3) 201.90/69.65 U92(x0, x1, x2, active(x3)) 201.90/69.65 U93(mark(x0), x1, x2, x3) 201.90/69.65 U93(x0, mark(x1), x2, x3) 201.90/69.65 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (8) QReductionProof (EQUIVALENT) 201.90/69.66 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.66 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (9) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 201.90/69.66 TAKE(mark(X1), X2) -> TAKE(X1, X2) 201.90/69.66 TAKE(active(X1), X2) -> TAKE(X1, X2) 201.90/69.66 TAKE(X1, active(X2)) -> TAKE(X1, X2) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (10) QDPSizeChangeProof (EQUIVALENT) 201.90/69.66 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.66 201.90/69.66 From the DPs we obtained the following set of size-change graphs: 201.90/69.66 *TAKE(X1, mark(X2)) -> TAKE(X1, X2) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2 201.90/69.66 201.90/69.66 201.90/69.66 *TAKE(mark(X1), X2) -> TAKE(X1, X2) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2 201.90/69.66 201.90/69.66 201.90/69.66 *TAKE(active(X1), X2) -> TAKE(X1, X2) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2 201.90/69.66 201.90/69.66 201.90/69.66 *TAKE(X1, active(X2)) -> TAKE(X1, X2) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (11) 201.90/69.66 YES 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (12) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U93^1(X1, mark(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(mark(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, mark(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, mark(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(active(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, active(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, active(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, active(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 The TRS R consists of the following rules: 201.90/69.66 201.90/69.66 active(zeros) -> mark(cons(0, zeros)) 201.90/69.66 active(U11(tt)) -> mark(tt) 201.90/69.66 active(U21(tt)) -> mark(tt) 201.90/69.66 active(U31(tt)) -> mark(tt) 201.90/69.66 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.66 active(U42(tt)) -> mark(tt) 201.90/69.66 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.66 active(U52(tt)) -> mark(tt) 201.90/69.66 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.66 active(U62(tt)) -> mark(tt) 201.90/69.66 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.66 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.66 active(U81(tt)) -> mark(nil) 201.90/69.66 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.66 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.66 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.66 active(isNat(0)) -> mark(tt) 201.90/69.66 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.66 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.66 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.66 active(isNatIList(zeros)) -> mark(tt) 201.90/69.66 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.66 active(isNatList(nil)) -> mark(tt) 201.90/69.66 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.66 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.66 active(length(nil)) -> mark(0) 201.90/69.66 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.66 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.66 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.66 mark(zeros) -> active(zeros) 201.90/69.66 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.66 mark(0) -> active(0) 201.90/69.66 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.66 mark(tt) -> active(tt) 201.90/69.66 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.66 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.66 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.66 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.66 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.66 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.66 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.66 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.66 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.66 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.66 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.66 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.66 mark(isNat(X)) -> active(isNat(X)) 201.90/69.66 mark(s(X)) -> active(s(mark(X))) 201.90/69.66 mark(length(X)) -> active(length(mark(X))) 201.90/69.66 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.66 mark(nil) -> active(nil) 201.90/69.66 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.66 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.66 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.66 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.66 U11(mark(X)) -> U11(X) 201.90/69.66 U11(active(X)) -> U11(X) 201.90/69.66 U21(mark(X)) -> U21(X) 201.90/69.66 U21(active(X)) -> U21(X) 201.90/69.66 U31(mark(X)) -> U31(X) 201.90/69.66 U31(active(X)) -> U31(X) 201.90/69.66 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.66 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.66 U42(mark(X)) -> U42(X) 201.90/69.66 U42(active(X)) -> U42(X) 201.90/69.66 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.66 isNatIList(active(X)) -> isNatIList(X) 201.90/69.66 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.66 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.66 U52(mark(X)) -> U52(X) 201.90/69.66 U52(active(X)) -> U52(X) 201.90/69.66 isNatList(mark(X)) -> isNatList(X) 201.90/69.66 isNatList(active(X)) -> isNatList(X) 201.90/69.66 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.66 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.66 U62(mark(X)) -> U62(X) 201.90/69.66 U62(active(X)) -> U62(X) 201.90/69.66 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.66 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.66 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.66 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.66 isNat(mark(X)) -> isNat(X) 201.90/69.66 isNat(active(X)) -> isNat(X) 201.90/69.66 s(mark(X)) -> s(X) 201.90/69.66 s(active(X)) -> s(X) 201.90/69.66 length(mark(X)) -> length(X) 201.90/69.66 length(active(X)) -> length(X) 201.90/69.66 U81(mark(X)) -> U81(X) 201.90/69.66 U81(active(X)) -> U81(X) 201.90/69.66 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 take(mark(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.66 take(active(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, active(X2)) -> take(X1, X2) 201.90/69.66 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (13) UsableRulesProof (EQUIVALENT) 201.90/69.66 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (14) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U93^1(X1, mark(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(mark(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, mark(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, mark(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(active(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, active(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, active(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, active(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (15) QReductionProof (EQUIVALENT) 201.90/69.66 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.66 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (16) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U93^1(X1, mark(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(mark(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, mark(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, mark(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(active(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, active(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, active(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 U93^1(X1, X2, X3, active(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (17) QDPSizeChangeProof (EQUIVALENT) 201.90/69.66 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.66 201.90/69.66 From the DPs we obtained the following set of size-change graphs: 201.90/69.66 *U93^1(X1, mark(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(mark(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(X1, X2, mark(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(X1, X2, X3, mark(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(active(X1), X2, X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(X1, active(X2), X3, X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(X1, X2, active(X3), X4) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U93^1(X1, X2, X3, active(X4)) -> U93^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (18) 201.90/69.66 YES 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (19) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U92^1(X1, mark(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(mark(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, mark(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, mark(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(active(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, active(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, active(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, active(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 The TRS R consists of the following rules: 201.90/69.66 201.90/69.66 active(zeros) -> mark(cons(0, zeros)) 201.90/69.66 active(U11(tt)) -> mark(tt) 201.90/69.66 active(U21(tt)) -> mark(tt) 201.90/69.66 active(U31(tt)) -> mark(tt) 201.90/69.66 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.66 active(U42(tt)) -> mark(tt) 201.90/69.66 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.66 active(U52(tt)) -> mark(tt) 201.90/69.66 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.66 active(U62(tt)) -> mark(tt) 201.90/69.66 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.66 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.66 active(U81(tt)) -> mark(nil) 201.90/69.66 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.66 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.66 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.66 active(isNat(0)) -> mark(tt) 201.90/69.66 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.66 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.66 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.66 active(isNatIList(zeros)) -> mark(tt) 201.90/69.66 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.66 active(isNatList(nil)) -> mark(tt) 201.90/69.66 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.66 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.66 active(length(nil)) -> mark(0) 201.90/69.66 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.66 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.66 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.66 mark(zeros) -> active(zeros) 201.90/69.66 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.66 mark(0) -> active(0) 201.90/69.66 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.66 mark(tt) -> active(tt) 201.90/69.66 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.66 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.66 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.66 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.66 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.66 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.66 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.66 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.66 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.66 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.66 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.66 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.66 mark(isNat(X)) -> active(isNat(X)) 201.90/69.66 mark(s(X)) -> active(s(mark(X))) 201.90/69.66 mark(length(X)) -> active(length(mark(X))) 201.90/69.66 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.66 mark(nil) -> active(nil) 201.90/69.66 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.66 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.66 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.66 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.66 U11(mark(X)) -> U11(X) 201.90/69.66 U11(active(X)) -> U11(X) 201.90/69.66 U21(mark(X)) -> U21(X) 201.90/69.66 U21(active(X)) -> U21(X) 201.90/69.66 U31(mark(X)) -> U31(X) 201.90/69.66 U31(active(X)) -> U31(X) 201.90/69.66 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.66 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.66 U42(mark(X)) -> U42(X) 201.90/69.66 U42(active(X)) -> U42(X) 201.90/69.66 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.66 isNatIList(active(X)) -> isNatIList(X) 201.90/69.66 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.66 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.66 U52(mark(X)) -> U52(X) 201.90/69.66 U52(active(X)) -> U52(X) 201.90/69.66 isNatList(mark(X)) -> isNatList(X) 201.90/69.66 isNatList(active(X)) -> isNatList(X) 201.90/69.66 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.66 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.66 U62(mark(X)) -> U62(X) 201.90/69.66 U62(active(X)) -> U62(X) 201.90/69.66 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.66 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.66 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.66 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.66 isNat(mark(X)) -> isNat(X) 201.90/69.66 isNat(active(X)) -> isNat(X) 201.90/69.66 s(mark(X)) -> s(X) 201.90/69.66 s(active(X)) -> s(X) 201.90/69.66 length(mark(X)) -> length(X) 201.90/69.66 length(active(X)) -> length(X) 201.90/69.66 U81(mark(X)) -> U81(X) 201.90/69.66 U81(active(X)) -> U81(X) 201.90/69.66 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 take(mark(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.66 take(active(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, active(X2)) -> take(X1, X2) 201.90/69.66 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (20) UsableRulesProof (EQUIVALENT) 201.90/69.66 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (21) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U92^1(X1, mark(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(mark(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, mark(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, mark(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(active(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, active(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, active(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, active(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (22) QReductionProof (EQUIVALENT) 201.90/69.66 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.66 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (23) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U92^1(X1, mark(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(mark(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, mark(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, mark(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(active(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, active(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, active(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 U92^1(X1, X2, X3, active(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (24) QDPSizeChangeProof (EQUIVALENT) 201.90/69.66 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.66 201.90/69.66 From the DPs we obtained the following set of size-change graphs: 201.90/69.66 *U92^1(X1, mark(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(mark(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(X1, X2, mark(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(X1, X2, X3, mark(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(active(X1), X2, X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(X1, active(X2), X3, X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(X1, X2, active(X3), X4) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U92^1(X1, X2, X3, active(X4)) -> U92^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (25) 201.90/69.66 YES 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (26) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U91^1(X1, mark(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(mark(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, mark(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, mark(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(active(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, active(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, active(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, active(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 The TRS R consists of the following rules: 201.90/69.66 201.90/69.66 active(zeros) -> mark(cons(0, zeros)) 201.90/69.66 active(U11(tt)) -> mark(tt) 201.90/69.66 active(U21(tt)) -> mark(tt) 201.90/69.66 active(U31(tt)) -> mark(tt) 201.90/69.66 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.66 active(U42(tt)) -> mark(tt) 201.90/69.66 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.66 active(U52(tt)) -> mark(tt) 201.90/69.66 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.66 active(U62(tt)) -> mark(tt) 201.90/69.66 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.66 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.66 active(U81(tt)) -> mark(nil) 201.90/69.66 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.66 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.66 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.66 active(isNat(0)) -> mark(tt) 201.90/69.66 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.66 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.66 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.66 active(isNatIList(zeros)) -> mark(tt) 201.90/69.66 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.66 active(isNatList(nil)) -> mark(tt) 201.90/69.66 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.66 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.66 active(length(nil)) -> mark(0) 201.90/69.66 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.66 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.66 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.66 mark(zeros) -> active(zeros) 201.90/69.66 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.66 mark(0) -> active(0) 201.90/69.66 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.66 mark(tt) -> active(tt) 201.90/69.66 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.66 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.66 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.66 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.66 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.66 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.66 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.66 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.66 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.66 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.66 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.66 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.66 mark(isNat(X)) -> active(isNat(X)) 201.90/69.66 mark(s(X)) -> active(s(mark(X))) 201.90/69.66 mark(length(X)) -> active(length(mark(X))) 201.90/69.66 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.66 mark(nil) -> active(nil) 201.90/69.66 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.66 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.66 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.66 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.66 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.66 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.66 U11(mark(X)) -> U11(X) 201.90/69.66 U11(active(X)) -> U11(X) 201.90/69.66 U21(mark(X)) -> U21(X) 201.90/69.66 U21(active(X)) -> U21(X) 201.90/69.66 U31(mark(X)) -> U31(X) 201.90/69.66 U31(active(X)) -> U31(X) 201.90/69.66 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.66 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.66 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.66 U42(mark(X)) -> U42(X) 201.90/69.66 U42(active(X)) -> U42(X) 201.90/69.66 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.66 isNatIList(active(X)) -> isNatIList(X) 201.90/69.66 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.66 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.66 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.66 U52(mark(X)) -> U52(X) 201.90/69.66 U52(active(X)) -> U52(X) 201.90/69.66 isNatList(mark(X)) -> isNatList(X) 201.90/69.66 isNatList(active(X)) -> isNatList(X) 201.90/69.66 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.66 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.66 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.66 U62(mark(X)) -> U62(X) 201.90/69.66 U62(active(X)) -> U62(X) 201.90/69.66 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.66 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.66 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.66 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.66 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.66 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.66 isNat(mark(X)) -> isNat(X) 201.90/69.66 isNat(active(X)) -> isNat(X) 201.90/69.66 s(mark(X)) -> s(X) 201.90/69.66 s(active(X)) -> s(X) 201.90/69.66 length(mark(X)) -> length(X) 201.90/69.66 length(active(X)) -> length(X) 201.90/69.66 U81(mark(X)) -> U81(X) 201.90/69.66 U81(active(X)) -> U81(X) 201.90/69.66 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.66 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.66 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.66 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.66 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.66 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.66 take(mark(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.66 take(active(X1), X2) -> take(X1, X2) 201.90/69.66 take(X1, active(X2)) -> take(X1, X2) 201.90/69.66 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (27) UsableRulesProof (EQUIVALENT) 201.90/69.66 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (28) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U91^1(X1, mark(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(mark(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, mark(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, mark(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(active(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, active(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, active(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, active(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (29) QReductionProof (EQUIVALENT) 201.90/69.66 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.66 201.90/69.66 cons(mark(x0), x1) 201.90/69.66 cons(x0, mark(x1)) 201.90/69.66 cons(active(x0), x1) 201.90/69.66 cons(x0, active(x1)) 201.90/69.66 U11(mark(x0)) 201.90/69.66 U11(active(x0)) 201.90/69.66 U21(mark(x0)) 201.90/69.66 U21(active(x0)) 201.90/69.66 U31(mark(x0)) 201.90/69.66 U31(active(x0)) 201.90/69.66 U41(mark(x0), x1) 201.90/69.66 U41(x0, mark(x1)) 201.90/69.66 U41(active(x0), x1) 201.90/69.66 U41(x0, active(x1)) 201.90/69.66 U42(mark(x0)) 201.90/69.66 U42(active(x0)) 201.90/69.66 isNatIList(mark(x0)) 201.90/69.66 isNatIList(active(x0)) 201.90/69.66 U51(mark(x0), x1) 201.90/69.66 U51(x0, mark(x1)) 201.90/69.66 U51(active(x0), x1) 201.90/69.66 U51(x0, active(x1)) 201.90/69.66 U52(mark(x0)) 201.90/69.66 U52(active(x0)) 201.90/69.66 isNatList(mark(x0)) 201.90/69.66 isNatList(active(x0)) 201.90/69.66 U61(mark(x0), x1) 201.90/69.66 U61(x0, mark(x1)) 201.90/69.66 U61(active(x0), x1) 201.90/69.66 U61(x0, active(x1)) 201.90/69.66 U62(mark(x0)) 201.90/69.66 U62(active(x0)) 201.90/69.66 U71(mark(x0), x1, x2) 201.90/69.66 U71(x0, mark(x1), x2) 201.90/69.66 U71(x0, x1, mark(x2)) 201.90/69.66 U71(active(x0), x1, x2) 201.90/69.66 U71(x0, active(x1), x2) 201.90/69.66 U71(x0, x1, active(x2)) 201.90/69.66 U72(mark(x0), x1) 201.90/69.66 U72(x0, mark(x1)) 201.90/69.66 U72(active(x0), x1) 201.90/69.66 U72(x0, active(x1)) 201.90/69.66 isNat(mark(x0)) 201.90/69.66 isNat(active(x0)) 201.90/69.66 s(mark(x0)) 201.90/69.66 s(active(x0)) 201.90/69.66 length(mark(x0)) 201.90/69.66 length(active(x0)) 201.90/69.66 U81(mark(x0)) 201.90/69.66 U81(active(x0)) 201.90/69.66 U91(mark(x0), x1, x2, x3) 201.90/69.66 U91(x0, mark(x1), x2, x3) 201.90/69.66 U91(x0, x1, mark(x2), x3) 201.90/69.66 U91(x0, x1, x2, mark(x3)) 201.90/69.66 U91(active(x0), x1, x2, x3) 201.90/69.66 U91(x0, active(x1), x2, x3) 201.90/69.66 U91(x0, x1, active(x2), x3) 201.90/69.66 U91(x0, x1, x2, active(x3)) 201.90/69.66 U92(mark(x0), x1, x2, x3) 201.90/69.66 U92(x0, mark(x1), x2, x3) 201.90/69.66 U92(x0, x1, mark(x2), x3) 201.90/69.66 U92(x0, x1, x2, mark(x3)) 201.90/69.66 U92(active(x0), x1, x2, x3) 201.90/69.66 U92(x0, active(x1), x2, x3) 201.90/69.66 U92(x0, x1, active(x2), x3) 201.90/69.66 U92(x0, x1, x2, active(x3)) 201.90/69.66 U93(mark(x0), x1, x2, x3) 201.90/69.66 U93(x0, mark(x1), x2, x3) 201.90/69.66 U93(x0, x1, mark(x2), x3) 201.90/69.66 U93(x0, x1, x2, mark(x3)) 201.90/69.66 U93(active(x0), x1, x2, x3) 201.90/69.66 U93(x0, active(x1), x2, x3) 201.90/69.66 U93(x0, x1, active(x2), x3) 201.90/69.66 U93(x0, x1, x2, active(x3)) 201.90/69.66 take(mark(x0), x1) 201.90/69.66 take(x0, mark(x1)) 201.90/69.66 take(active(x0), x1) 201.90/69.66 take(x0, active(x1)) 201.90/69.66 201.90/69.66 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (30) 201.90/69.66 Obligation: 201.90/69.66 Q DP problem: 201.90/69.66 The TRS P consists of the following rules: 201.90/69.66 201.90/69.66 U91^1(X1, mark(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(mark(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, mark(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, mark(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(active(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, active(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, active(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 U91^1(X1, X2, X3, active(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 201.90/69.66 R is empty. 201.90/69.66 The set Q consists of the following terms: 201.90/69.66 201.90/69.66 active(zeros) 201.90/69.66 active(U11(tt)) 201.90/69.66 active(U21(tt)) 201.90/69.66 active(U31(tt)) 201.90/69.66 active(U41(tt, x0)) 201.90/69.66 active(U42(tt)) 201.90/69.66 active(U51(tt, x0)) 201.90/69.66 active(U52(tt)) 201.90/69.66 active(U61(tt, x0)) 201.90/69.66 active(U62(tt)) 201.90/69.66 active(U71(tt, x0, x1)) 201.90/69.66 active(U72(tt, x0)) 201.90/69.66 active(U81(tt)) 201.90/69.66 active(U91(tt, x0, x1, x2)) 201.90/69.66 active(U92(tt, x0, x1, x2)) 201.90/69.66 active(U93(tt, x0, x1, x2)) 201.90/69.66 active(isNat(0)) 201.90/69.66 active(isNat(length(x0))) 201.90/69.66 active(isNat(s(x0))) 201.90/69.66 active(isNatIList(x0)) 201.90/69.66 active(isNatList(nil)) 201.90/69.66 active(isNatList(cons(x0, x1))) 201.90/69.66 active(isNatList(take(x0, x1))) 201.90/69.66 active(length(nil)) 201.90/69.66 active(length(cons(x0, x1))) 201.90/69.66 active(take(0, x0)) 201.90/69.66 active(take(s(x0), cons(x1, x2))) 201.90/69.66 mark(zeros) 201.90/69.66 mark(cons(x0, x1)) 201.90/69.66 mark(0) 201.90/69.66 mark(U11(x0)) 201.90/69.66 mark(tt) 201.90/69.66 mark(U21(x0)) 201.90/69.66 mark(U31(x0)) 201.90/69.66 mark(U41(x0, x1)) 201.90/69.66 mark(U42(x0)) 201.90/69.66 mark(isNatIList(x0)) 201.90/69.66 mark(U51(x0, x1)) 201.90/69.66 mark(U52(x0)) 201.90/69.66 mark(isNatList(x0)) 201.90/69.66 mark(U61(x0, x1)) 201.90/69.66 mark(U62(x0)) 201.90/69.66 mark(U71(x0, x1, x2)) 201.90/69.66 mark(U72(x0, x1)) 201.90/69.66 mark(isNat(x0)) 201.90/69.66 mark(s(x0)) 201.90/69.66 mark(length(x0)) 201.90/69.66 mark(U81(x0)) 201.90/69.66 mark(nil) 201.90/69.66 mark(U91(x0, x1, x2, x3)) 201.90/69.66 mark(U92(x0, x1, x2, x3)) 201.90/69.66 mark(U93(x0, x1, x2, x3)) 201.90/69.66 mark(take(x0, x1)) 201.90/69.66 201.90/69.66 We have to consider all minimal (P,Q,R)-chains. 201.90/69.66 ---------------------------------------- 201.90/69.66 201.90/69.66 (31) QDPSizeChangeProof (EQUIVALENT) 201.90/69.66 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.66 201.90/69.66 From the DPs we obtained the following set of size-change graphs: 201.90/69.66 *U91^1(X1, mark(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U91^1(mark(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U91^1(X1, X2, mark(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.66 201.90/69.66 201.90/69.66 *U91^1(X1, X2, X3, mark(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.66 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.66 201.90/69.67 201.90/69.67 *U91^1(active(X1), X2, X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.67 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3, 4 >= 4 201.90/69.67 201.90/69.67 201.90/69.67 *U91^1(X1, active(X2), X3, X4) -> U91^1(X1, X2, X3, X4) 201.90/69.67 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4 201.90/69.67 201.90/69.67 201.90/69.67 *U91^1(X1, X2, active(X3), X4) -> U91^1(X1, X2, X3, X4) 201.90/69.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 4 >= 4 201.90/69.67 201.90/69.67 201.90/69.67 *U91^1(X1, X2, X3, active(X4)) -> U91^1(X1, X2, X3, X4) 201.90/69.67 The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (32) 201.90/69.67 YES 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (33) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 U81^1(active(X)) -> U81^1(X) 201.90/69.67 U81^1(mark(X)) -> U81^1(X) 201.90/69.67 201.90/69.67 The TRS R consists of the following rules: 201.90/69.67 201.90/69.67 active(zeros) -> mark(cons(0, zeros)) 201.90/69.67 active(U11(tt)) -> mark(tt) 201.90/69.67 active(U21(tt)) -> mark(tt) 201.90/69.67 active(U31(tt)) -> mark(tt) 201.90/69.67 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.67 active(U42(tt)) -> mark(tt) 201.90/69.67 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.67 active(U52(tt)) -> mark(tt) 201.90/69.67 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.67 active(U62(tt)) -> mark(tt) 201.90/69.67 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.67 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.67 active(U81(tt)) -> mark(nil) 201.90/69.67 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.67 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.67 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.67 active(isNat(0)) -> mark(tt) 201.90/69.67 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.67 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.67 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.67 active(isNatIList(zeros)) -> mark(tt) 201.90/69.67 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.67 active(isNatList(nil)) -> mark(tt) 201.90/69.67 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.67 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.67 active(length(nil)) -> mark(0) 201.90/69.67 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.67 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.67 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.67 mark(zeros) -> active(zeros) 201.90/69.67 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.67 mark(0) -> active(0) 201.90/69.67 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.67 mark(tt) -> active(tt) 201.90/69.67 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.67 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.67 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.67 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.67 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.67 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.67 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.67 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.67 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.67 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.67 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.67 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.67 mark(isNat(X)) -> active(isNat(X)) 201.90/69.67 mark(s(X)) -> active(s(mark(X))) 201.90/69.67 mark(length(X)) -> active(length(mark(X))) 201.90/69.67 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.67 mark(nil) -> active(nil) 201.90/69.67 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.67 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.67 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.67 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.67 U11(mark(X)) -> U11(X) 201.90/69.67 U11(active(X)) -> U11(X) 201.90/69.67 U21(mark(X)) -> U21(X) 201.90/69.67 U21(active(X)) -> U21(X) 201.90/69.67 U31(mark(X)) -> U31(X) 201.90/69.67 U31(active(X)) -> U31(X) 201.90/69.67 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.67 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.67 U42(mark(X)) -> U42(X) 201.90/69.67 U42(active(X)) -> U42(X) 201.90/69.67 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.67 isNatIList(active(X)) -> isNatIList(X) 201.90/69.67 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.67 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.67 U52(mark(X)) -> U52(X) 201.90/69.67 U52(active(X)) -> U52(X) 201.90/69.67 isNatList(mark(X)) -> isNatList(X) 201.90/69.67 isNatList(active(X)) -> isNatList(X) 201.90/69.67 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.67 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.67 U62(mark(X)) -> U62(X) 201.90/69.67 U62(active(X)) -> U62(X) 201.90/69.67 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.67 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.67 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.67 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.67 isNat(mark(X)) -> isNat(X) 201.90/69.67 isNat(active(X)) -> isNat(X) 201.90/69.67 s(mark(X)) -> s(X) 201.90/69.67 s(active(X)) -> s(X) 201.90/69.67 length(mark(X)) -> length(X) 201.90/69.67 length(active(X)) -> length(X) 201.90/69.67 U81(mark(X)) -> U81(X) 201.90/69.67 U81(active(X)) -> U81(X) 201.90/69.67 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 take(mark(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.67 take(active(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, active(X2)) -> take(X1, X2) 201.90/69.67 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (34) UsableRulesProof (EQUIVALENT) 201.90/69.67 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (35) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 U81^1(active(X)) -> U81^1(X) 201.90/69.67 U81^1(mark(X)) -> U81^1(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (36) QReductionProof (EQUIVALENT) 201.90/69.67 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.67 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (37) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 U81^1(active(X)) -> U81^1(X) 201.90/69.67 U81^1(mark(X)) -> U81^1(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (38) QDPSizeChangeProof (EQUIVALENT) 201.90/69.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.67 201.90/69.67 From the DPs we obtained the following set of size-change graphs: 201.90/69.67 *U81^1(active(X)) -> U81^1(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 *U81^1(mark(X)) -> U81^1(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (39) 201.90/69.67 YES 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (40) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 LENGTH(active(X)) -> LENGTH(X) 201.90/69.67 LENGTH(mark(X)) -> LENGTH(X) 201.90/69.67 201.90/69.67 The TRS R consists of the following rules: 201.90/69.67 201.90/69.67 active(zeros) -> mark(cons(0, zeros)) 201.90/69.67 active(U11(tt)) -> mark(tt) 201.90/69.67 active(U21(tt)) -> mark(tt) 201.90/69.67 active(U31(tt)) -> mark(tt) 201.90/69.67 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.67 active(U42(tt)) -> mark(tt) 201.90/69.67 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.67 active(U52(tt)) -> mark(tt) 201.90/69.67 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.67 active(U62(tt)) -> mark(tt) 201.90/69.67 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.67 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.67 active(U81(tt)) -> mark(nil) 201.90/69.67 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.67 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.67 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.67 active(isNat(0)) -> mark(tt) 201.90/69.67 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.67 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.67 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.67 active(isNatIList(zeros)) -> mark(tt) 201.90/69.67 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.67 active(isNatList(nil)) -> mark(tt) 201.90/69.67 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.67 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.67 active(length(nil)) -> mark(0) 201.90/69.67 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.67 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.67 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.67 mark(zeros) -> active(zeros) 201.90/69.67 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.67 mark(0) -> active(0) 201.90/69.67 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.67 mark(tt) -> active(tt) 201.90/69.67 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.67 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.67 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.67 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.67 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.67 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.67 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.67 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.67 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.67 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.67 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.67 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.67 mark(isNat(X)) -> active(isNat(X)) 201.90/69.67 mark(s(X)) -> active(s(mark(X))) 201.90/69.67 mark(length(X)) -> active(length(mark(X))) 201.90/69.67 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.67 mark(nil) -> active(nil) 201.90/69.67 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.67 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.67 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.67 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.67 U11(mark(X)) -> U11(X) 201.90/69.67 U11(active(X)) -> U11(X) 201.90/69.67 U21(mark(X)) -> U21(X) 201.90/69.67 U21(active(X)) -> U21(X) 201.90/69.67 U31(mark(X)) -> U31(X) 201.90/69.67 U31(active(X)) -> U31(X) 201.90/69.67 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.67 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.67 U42(mark(X)) -> U42(X) 201.90/69.67 U42(active(X)) -> U42(X) 201.90/69.67 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.67 isNatIList(active(X)) -> isNatIList(X) 201.90/69.67 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.67 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.67 U52(mark(X)) -> U52(X) 201.90/69.67 U52(active(X)) -> U52(X) 201.90/69.67 isNatList(mark(X)) -> isNatList(X) 201.90/69.67 isNatList(active(X)) -> isNatList(X) 201.90/69.67 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.67 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.67 U62(mark(X)) -> U62(X) 201.90/69.67 U62(active(X)) -> U62(X) 201.90/69.67 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.67 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.67 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.67 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.67 isNat(mark(X)) -> isNat(X) 201.90/69.67 isNat(active(X)) -> isNat(X) 201.90/69.67 s(mark(X)) -> s(X) 201.90/69.67 s(active(X)) -> s(X) 201.90/69.67 length(mark(X)) -> length(X) 201.90/69.67 length(active(X)) -> length(X) 201.90/69.67 U81(mark(X)) -> U81(X) 201.90/69.67 U81(active(X)) -> U81(X) 201.90/69.67 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 take(mark(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.67 take(active(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, active(X2)) -> take(X1, X2) 201.90/69.67 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (41) UsableRulesProof (EQUIVALENT) 201.90/69.67 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (42) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 LENGTH(active(X)) -> LENGTH(X) 201.90/69.67 LENGTH(mark(X)) -> LENGTH(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (43) QReductionProof (EQUIVALENT) 201.90/69.67 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.67 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (44) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 LENGTH(active(X)) -> LENGTH(X) 201.90/69.67 LENGTH(mark(X)) -> LENGTH(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (45) QDPSizeChangeProof (EQUIVALENT) 201.90/69.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.67 201.90/69.67 From the DPs we obtained the following set of size-change graphs: 201.90/69.67 *LENGTH(active(X)) -> LENGTH(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 *LENGTH(mark(X)) -> LENGTH(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (46) 201.90/69.67 YES 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (47) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 S(active(X)) -> S(X) 201.90/69.67 S(mark(X)) -> S(X) 201.90/69.67 201.90/69.67 The TRS R consists of the following rules: 201.90/69.67 201.90/69.67 active(zeros) -> mark(cons(0, zeros)) 201.90/69.67 active(U11(tt)) -> mark(tt) 201.90/69.67 active(U21(tt)) -> mark(tt) 201.90/69.67 active(U31(tt)) -> mark(tt) 201.90/69.67 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.67 active(U42(tt)) -> mark(tt) 201.90/69.67 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.67 active(U52(tt)) -> mark(tt) 201.90/69.67 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.67 active(U62(tt)) -> mark(tt) 201.90/69.67 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.67 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.67 active(U81(tt)) -> mark(nil) 201.90/69.67 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.67 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.67 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.67 active(isNat(0)) -> mark(tt) 201.90/69.67 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.67 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.67 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.67 active(isNatIList(zeros)) -> mark(tt) 201.90/69.67 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.67 active(isNatList(nil)) -> mark(tt) 201.90/69.67 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.67 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.67 active(length(nil)) -> mark(0) 201.90/69.67 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.67 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.67 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.67 mark(zeros) -> active(zeros) 201.90/69.67 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.67 mark(0) -> active(0) 201.90/69.67 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.67 mark(tt) -> active(tt) 201.90/69.67 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.67 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.67 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.67 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.67 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.67 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.67 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.67 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.67 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.67 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.67 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.67 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.67 mark(isNat(X)) -> active(isNat(X)) 201.90/69.67 mark(s(X)) -> active(s(mark(X))) 201.90/69.67 mark(length(X)) -> active(length(mark(X))) 201.90/69.67 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.67 mark(nil) -> active(nil) 201.90/69.67 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.67 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.67 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.67 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.67 U11(mark(X)) -> U11(X) 201.90/69.67 U11(active(X)) -> U11(X) 201.90/69.67 U21(mark(X)) -> U21(X) 201.90/69.67 U21(active(X)) -> U21(X) 201.90/69.67 U31(mark(X)) -> U31(X) 201.90/69.67 U31(active(X)) -> U31(X) 201.90/69.67 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.67 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.67 U42(mark(X)) -> U42(X) 201.90/69.67 U42(active(X)) -> U42(X) 201.90/69.67 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.67 isNatIList(active(X)) -> isNatIList(X) 201.90/69.67 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.67 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.67 U52(mark(X)) -> U52(X) 201.90/69.67 U52(active(X)) -> U52(X) 201.90/69.67 isNatList(mark(X)) -> isNatList(X) 201.90/69.67 isNatList(active(X)) -> isNatList(X) 201.90/69.67 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.67 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.67 U62(mark(X)) -> U62(X) 201.90/69.67 U62(active(X)) -> U62(X) 201.90/69.67 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.67 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.67 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.67 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.67 isNat(mark(X)) -> isNat(X) 201.90/69.67 isNat(active(X)) -> isNat(X) 201.90/69.67 s(mark(X)) -> s(X) 201.90/69.67 s(active(X)) -> s(X) 201.90/69.67 length(mark(X)) -> length(X) 201.90/69.67 length(active(X)) -> length(X) 201.90/69.67 U81(mark(X)) -> U81(X) 201.90/69.67 U81(active(X)) -> U81(X) 201.90/69.67 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 take(mark(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.67 take(active(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, active(X2)) -> take(X1, X2) 201.90/69.67 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (48) UsableRulesProof (EQUIVALENT) 201.90/69.67 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (49) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 S(active(X)) -> S(X) 201.90/69.67 S(mark(X)) -> S(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (50) QReductionProof (EQUIVALENT) 201.90/69.67 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.67 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (51) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 S(active(X)) -> S(X) 201.90/69.67 S(mark(X)) -> S(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (52) QDPSizeChangeProof (EQUIVALENT) 201.90/69.67 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.67 201.90/69.67 From the DPs we obtained the following set of size-change graphs: 201.90/69.67 *S(active(X)) -> S(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 *S(mark(X)) -> S(X) 201.90/69.67 The graph contains the following edges 1 > 1 201.90/69.67 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (53) 201.90/69.67 YES 201.90/69.67 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (54) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 ISNAT(active(X)) -> ISNAT(X) 201.90/69.67 ISNAT(mark(X)) -> ISNAT(X) 201.90/69.67 201.90/69.67 The TRS R consists of the following rules: 201.90/69.67 201.90/69.67 active(zeros) -> mark(cons(0, zeros)) 201.90/69.67 active(U11(tt)) -> mark(tt) 201.90/69.67 active(U21(tt)) -> mark(tt) 201.90/69.67 active(U31(tt)) -> mark(tt) 201.90/69.67 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.67 active(U42(tt)) -> mark(tt) 201.90/69.67 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.67 active(U52(tt)) -> mark(tt) 201.90/69.67 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.67 active(U62(tt)) -> mark(tt) 201.90/69.67 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.67 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.67 active(U81(tt)) -> mark(nil) 201.90/69.67 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.67 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.67 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.67 active(isNat(0)) -> mark(tt) 201.90/69.67 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.67 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.67 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.67 active(isNatIList(zeros)) -> mark(tt) 201.90/69.67 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.67 active(isNatList(nil)) -> mark(tt) 201.90/69.67 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.67 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.67 active(length(nil)) -> mark(0) 201.90/69.67 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.67 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.67 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.67 mark(zeros) -> active(zeros) 201.90/69.67 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.67 mark(0) -> active(0) 201.90/69.67 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.67 mark(tt) -> active(tt) 201.90/69.67 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.67 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.67 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.67 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.67 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.67 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.67 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.67 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.67 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.67 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.67 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.67 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.67 mark(isNat(X)) -> active(isNat(X)) 201.90/69.67 mark(s(X)) -> active(s(mark(X))) 201.90/69.67 mark(length(X)) -> active(length(mark(X))) 201.90/69.67 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.67 mark(nil) -> active(nil) 201.90/69.67 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.67 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.67 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.67 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.67 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.67 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.67 U11(mark(X)) -> U11(X) 201.90/69.67 U11(active(X)) -> U11(X) 201.90/69.67 U21(mark(X)) -> U21(X) 201.90/69.67 U21(active(X)) -> U21(X) 201.90/69.67 U31(mark(X)) -> U31(X) 201.90/69.67 U31(active(X)) -> U31(X) 201.90/69.67 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.67 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.67 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.67 U42(mark(X)) -> U42(X) 201.90/69.67 U42(active(X)) -> U42(X) 201.90/69.67 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.67 isNatIList(active(X)) -> isNatIList(X) 201.90/69.67 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.67 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.67 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.67 U52(mark(X)) -> U52(X) 201.90/69.67 U52(active(X)) -> U52(X) 201.90/69.67 isNatList(mark(X)) -> isNatList(X) 201.90/69.67 isNatList(active(X)) -> isNatList(X) 201.90/69.67 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.67 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.67 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.67 U62(mark(X)) -> U62(X) 201.90/69.67 U62(active(X)) -> U62(X) 201.90/69.67 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.67 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.67 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.67 U72(mark(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, mark(X2)) -> U72(X1, X2) 201.90/69.67 U72(active(X1), X2) -> U72(X1, X2) 201.90/69.67 U72(X1, active(X2)) -> U72(X1, X2) 201.90/69.67 isNat(mark(X)) -> isNat(X) 201.90/69.67 isNat(active(X)) -> isNat(X) 201.90/69.67 s(mark(X)) -> s(X) 201.90/69.67 s(active(X)) -> s(X) 201.90/69.67 length(mark(X)) -> length(X) 201.90/69.67 length(active(X)) -> length(X) 201.90/69.67 U81(mark(X)) -> U81(X) 201.90/69.67 U81(active(X)) -> U81(X) 201.90/69.67 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 201.90/69.67 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 201.90/69.67 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 201.90/69.67 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 201.90/69.67 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 201.90/69.67 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 201.90/69.67 take(mark(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, mark(X2)) -> take(X1, X2) 201.90/69.67 take(active(X1), X2) -> take(X1, X2) 201.90/69.67 take(X1, active(X2)) -> take(X1, X2) 201.90/69.67 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.67 active(U61(tt, x0)) 201.90/69.67 active(U62(tt)) 201.90/69.67 active(U71(tt, x0, x1)) 201.90/69.67 active(U72(tt, x0)) 201.90/69.67 active(U81(tt)) 201.90/69.67 active(U91(tt, x0, x1, x2)) 201.90/69.67 active(U92(tt, x0, x1, x2)) 201.90/69.67 active(U93(tt, x0, x1, x2)) 201.90/69.67 active(isNat(0)) 201.90/69.67 active(isNat(length(x0))) 201.90/69.67 active(isNat(s(x0))) 201.90/69.67 active(isNatIList(x0)) 201.90/69.67 active(isNatList(nil)) 201.90/69.67 active(isNatList(cons(x0, x1))) 201.90/69.67 active(isNatList(take(x0, x1))) 201.90/69.67 active(length(nil)) 201.90/69.67 active(length(cons(x0, x1))) 201.90/69.67 active(take(0, x0)) 201.90/69.67 active(take(s(x0), cons(x1, x2))) 201.90/69.67 mark(zeros) 201.90/69.67 mark(cons(x0, x1)) 201.90/69.67 mark(0) 201.90/69.67 mark(U11(x0)) 201.90/69.67 mark(tt) 201.90/69.67 mark(U21(x0)) 201.90/69.67 mark(U31(x0)) 201.90/69.67 mark(U41(x0, x1)) 201.90/69.67 mark(U42(x0)) 201.90/69.67 mark(isNatIList(x0)) 201.90/69.67 mark(U51(x0, x1)) 201.90/69.67 mark(U52(x0)) 201.90/69.67 mark(isNatList(x0)) 201.90/69.67 mark(U61(x0, x1)) 201.90/69.67 mark(U62(x0)) 201.90/69.67 mark(U71(x0, x1, x2)) 201.90/69.67 mark(U72(x0, x1)) 201.90/69.67 mark(isNat(x0)) 201.90/69.67 mark(s(x0)) 201.90/69.67 mark(length(x0)) 201.90/69.67 mark(U81(x0)) 201.90/69.67 mark(nil) 201.90/69.67 mark(U91(x0, x1, x2, x3)) 201.90/69.67 mark(U92(x0, x1, x2, x3)) 201.90/69.67 mark(U93(x0, x1, x2, x3)) 201.90/69.67 mark(take(x0, x1)) 201.90/69.67 cons(mark(x0), x1) 201.90/69.67 cons(x0, mark(x1)) 201.90/69.67 cons(active(x0), x1) 201.90/69.67 cons(x0, active(x1)) 201.90/69.67 U11(mark(x0)) 201.90/69.67 U11(active(x0)) 201.90/69.67 U21(mark(x0)) 201.90/69.67 U21(active(x0)) 201.90/69.67 U31(mark(x0)) 201.90/69.67 U31(active(x0)) 201.90/69.67 U41(mark(x0), x1) 201.90/69.67 U41(x0, mark(x1)) 201.90/69.67 U41(active(x0), x1) 201.90/69.67 U41(x0, active(x1)) 201.90/69.67 U42(mark(x0)) 201.90/69.67 U42(active(x0)) 201.90/69.67 isNatIList(mark(x0)) 201.90/69.67 isNatIList(active(x0)) 201.90/69.67 U51(mark(x0), x1) 201.90/69.67 U51(x0, mark(x1)) 201.90/69.67 U51(active(x0), x1) 201.90/69.67 U51(x0, active(x1)) 201.90/69.67 U52(mark(x0)) 201.90/69.67 U52(active(x0)) 201.90/69.67 isNatList(mark(x0)) 201.90/69.67 isNatList(active(x0)) 201.90/69.67 U61(mark(x0), x1) 201.90/69.67 U61(x0, mark(x1)) 201.90/69.67 U61(active(x0), x1) 201.90/69.67 U61(x0, active(x1)) 201.90/69.67 U62(mark(x0)) 201.90/69.67 U62(active(x0)) 201.90/69.67 U71(mark(x0), x1, x2) 201.90/69.67 U71(x0, mark(x1), x2) 201.90/69.67 U71(x0, x1, mark(x2)) 201.90/69.67 U71(active(x0), x1, x2) 201.90/69.67 U71(x0, active(x1), x2) 201.90/69.67 U71(x0, x1, active(x2)) 201.90/69.67 U72(mark(x0), x1) 201.90/69.67 U72(x0, mark(x1)) 201.90/69.67 U72(active(x0), x1) 201.90/69.67 U72(x0, active(x1)) 201.90/69.67 isNat(mark(x0)) 201.90/69.67 isNat(active(x0)) 201.90/69.67 s(mark(x0)) 201.90/69.67 s(active(x0)) 201.90/69.67 length(mark(x0)) 201.90/69.67 length(active(x0)) 201.90/69.67 U81(mark(x0)) 201.90/69.67 U81(active(x0)) 201.90/69.67 U91(mark(x0), x1, x2, x3) 201.90/69.67 U91(x0, mark(x1), x2, x3) 201.90/69.67 U91(x0, x1, mark(x2), x3) 201.90/69.67 U91(x0, x1, x2, mark(x3)) 201.90/69.67 U91(active(x0), x1, x2, x3) 201.90/69.67 U91(x0, active(x1), x2, x3) 201.90/69.67 U91(x0, x1, active(x2), x3) 201.90/69.67 U91(x0, x1, x2, active(x3)) 201.90/69.67 U92(mark(x0), x1, x2, x3) 201.90/69.67 U92(x0, mark(x1), x2, x3) 201.90/69.67 U92(x0, x1, mark(x2), x3) 201.90/69.67 U92(x0, x1, x2, mark(x3)) 201.90/69.67 U92(active(x0), x1, x2, x3) 201.90/69.67 U92(x0, active(x1), x2, x3) 201.90/69.67 U92(x0, x1, active(x2), x3) 201.90/69.67 U92(x0, x1, x2, active(x3)) 201.90/69.67 U93(mark(x0), x1, x2, x3) 201.90/69.67 U93(x0, mark(x1), x2, x3) 201.90/69.67 U93(x0, x1, mark(x2), x3) 201.90/69.67 U93(x0, x1, x2, mark(x3)) 201.90/69.67 U93(active(x0), x1, x2, x3) 201.90/69.67 U93(x0, active(x1), x2, x3) 201.90/69.67 U93(x0, x1, active(x2), x3) 201.90/69.67 U93(x0, x1, x2, active(x3)) 201.90/69.67 take(mark(x0), x1) 201.90/69.67 take(x0, mark(x1)) 201.90/69.67 take(active(x0), x1) 201.90/69.67 take(x0, active(x1)) 201.90/69.67 201.90/69.67 We have to consider all minimal (P,Q,R)-chains. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (55) UsableRulesProof (EQUIVALENT) 201.90/69.67 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 201.90/69.67 ---------------------------------------- 201.90/69.67 201.90/69.67 (56) 201.90/69.67 Obligation: 201.90/69.67 Q DP problem: 201.90/69.67 The TRS P consists of the following rules: 201.90/69.67 201.90/69.67 ISNAT(active(X)) -> ISNAT(X) 201.90/69.67 ISNAT(mark(X)) -> ISNAT(X) 201.90/69.67 201.90/69.67 R is empty. 201.90/69.67 The set Q consists of the following terms: 201.90/69.67 201.90/69.67 active(zeros) 201.90/69.67 active(U11(tt)) 201.90/69.67 active(U21(tt)) 201.90/69.67 active(U31(tt)) 201.90/69.67 active(U41(tt, x0)) 201.90/69.67 active(U42(tt)) 201.90/69.67 active(U51(tt, x0)) 201.90/69.67 active(U52(tt)) 201.90/69.68 active(U61(tt, x0)) 201.90/69.68 active(U62(tt)) 201.90/69.68 active(U71(tt, x0, x1)) 201.90/69.68 active(U72(tt, x0)) 201.90/69.68 active(U81(tt)) 201.90/69.68 active(U91(tt, x0, x1, x2)) 201.90/69.68 active(U92(tt, x0, x1, x2)) 201.90/69.68 active(U93(tt, x0, x1, x2)) 201.90/69.68 active(isNat(0)) 201.90/69.68 active(isNat(length(x0))) 201.90/69.68 active(isNat(s(x0))) 201.90/69.68 active(isNatIList(x0)) 201.90/69.68 active(isNatList(nil)) 201.90/69.68 active(isNatList(cons(x0, x1))) 201.90/69.68 active(isNatList(take(x0, x1))) 201.90/69.68 active(length(nil)) 201.90/69.68 active(length(cons(x0, x1))) 201.90/69.68 active(take(0, x0)) 201.90/69.68 active(take(s(x0), cons(x1, x2))) 201.90/69.68 mark(zeros) 201.90/69.68 mark(cons(x0, x1)) 201.90/69.68 mark(0) 201.90/69.68 mark(U11(x0)) 201.90/69.68 mark(tt) 201.90/69.68 mark(U21(x0)) 201.90/69.68 mark(U31(x0)) 201.90/69.68 mark(U41(x0, x1)) 201.90/69.68 mark(U42(x0)) 201.90/69.68 mark(isNatIList(x0)) 201.90/69.68 mark(U51(x0, x1)) 201.90/69.68 mark(U52(x0)) 201.90/69.68 mark(isNatList(x0)) 201.90/69.68 mark(U61(x0, x1)) 201.90/69.68 mark(U62(x0)) 201.90/69.68 mark(U71(x0, x1, x2)) 201.90/69.68 mark(U72(x0, x1)) 201.90/69.68 mark(isNat(x0)) 201.90/69.68 mark(s(x0)) 201.90/69.68 mark(length(x0)) 201.90/69.68 mark(U81(x0)) 201.90/69.68 mark(nil) 201.90/69.68 mark(U91(x0, x1, x2, x3)) 201.90/69.68 mark(U92(x0, x1, x2, x3)) 201.90/69.68 mark(U93(x0, x1, x2, x3)) 201.90/69.68 mark(take(x0, x1)) 201.90/69.68 cons(mark(x0), x1) 201.90/69.68 cons(x0, mark(x1)) 201.90/69.68 cons(active(x0), x1) 201.90/69.68 cons(x0, active(x1)) 201.90/69.68 U11(mark(x0)) 201.90/69.68 U11(active(x0)) 201.90/69.68 U21(mark(x0)) 201.90/69.68 U21(active(x0)) 201.90/69.68 U31(mark(x0)) 201.90/69.68 U31(active(x0)) 201.90/69.68 U41(mark(x0), x1) 201.90/69.68 U41(x0, mark(x1)) 201.90/69.68 U41(active(x0), x1) 201.90/69.68 U41(x0, active(x1)) 201.90/69.68 U42(mark(x0)) 201.90/69.68 U42(active(x0)) 201.90/69.68 isNatIList(mark(x0)) 201.90/69.68 isNatIList(active(x0)) 201.90/69.68 U51(mark(x0), x1) 201.90/69.68 U51(x0, mark(x1)) 201.90/69.68 U51(active(x0), x1) 201.90/69.68 U51(x0, active(x1)) 201.90/69.68 U52(mark(x0)) 201.90/69.68 U52(active(x0)) 201.90/69.68 isNatList(mark(x0)) 201.90/69.68 isNatList(active(x0)) 201.90/69.68 U61(mark(x0), x1) 201.90/69.68 U61(x0, mark(x1)) 201.90/69.68 U61(active(x0), x1) 201.90/69.68 U61(x0, active(x1)) 201.90/69.68 U62(mark(x0)) 201.90/69.68 U62(active(x0)) 201.90/69.68 U71(mark(x0), x1, x2) 201.90/69.68 U71(x0, mark(x1), x2) 201.90/69.68 U71(x0, x1, mark(x2)) 201.90/69.68 U71(active(x0), x1, x2) 201.90/69.68 U71(x0, active(x1), x2) 201.90/69.68 U71(x0, x1, active(x2)) 201.90/69.68 U72(mark(x0), x1) 201.90/69.68 U72(x0, mark(x1)) 201.90/69.68 U72(active(x0), x1) 201.90/69.68 U72(x0, active(x1)) 201.90/69.68 isNat(mark(x0)) 201.90/69.68 isNat(active(x0)) 201.90/69.68 s(mark(x0)) 201.90/69.68 s(active(x0)) 201.90/69.68 length(mark(x0)) 201.90/69.68 length(active(x0)) 201.90/69.68 U81(mark(x0)) 201.90/69.68 U81(active(x0)) 201.90/69.68 U91(mark(x0), x1, x2, x3) 201.90/69.68 U91(x0, mark(x1), x2, x3) 201.90/69.68 U91(x0, x1, mark(x2), x3) 201.90/69.68 U91(x0, x1, x2, mark(x3)) 201.90/69.68 U91(active(x0), x1, x2, x3) 201.90/69.68 U91(x0, active(x1), x2, x3) 201.90/69.68 U91(x0, x1, active(x2), x3) 201.90/69.68 U91(x0, x1, x2, active(x3)) 201.90/69.68 U92(mark(x0), x1, x2, x3) 201.90/69.68 U92(x0, mark(x1), x2, x3) 201.90/69.68 U92(x0, x1, mark(x2), x3) 201.90/69.68 U92(x0, x1, x2, mark(x3)) 201.90/69.68 U92(active(x0), x1, x2, x3) 201.90/69.68 U92(x0, active(x1), x2, x3) 201.90/69.68 U92(x0, x1, active(x2), x3) 201.90/69.68 U92(x0, x1, x2, active(x3)) 201.90/69.68 U93(mark(x0), x1, x2, x3) 201.90/69.68 U93(x0, mark(x1), x2, x3) 201.90/69.68 U93(x0, x1, mark(x2), x3) 201.90/69.68 U93(x0, x1, x2, mark(x3)) 201.90/69.68 U93(active(x0), x1, x2, x3) 201.90/69.68 U93(x0, active(x1), x2, x3) 201.90/69.68 U93(x0, x1, active(x2), x3) 201.90/69.68 U93(x0, x1, x2, active(x3)) 201.90/69.68 take(mark(x0), x1) 201.90/69.68 take(x0, mark(x1)) 201.90/69.68 take(active(x0), x1) 201.90/69.68 take(x0, active(x1)) 201.90/69.68 201.90/69.68 We have to consider all minimal (P,Q,R)-chains. 201.90/69.68 ---------------------------------------- 201.90/69.68 201.90/69.68 (57) QReductionProof (EQUIVALENT) 201.90/69.68 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 201.90/69.68 201.90/69.68 cons(mark(x0), x1) 201.90/69.68 cons(x0, mark(x1)) 201.90/69.68 cons(active(x0), x1) 201.90/69.68 cons(x0, active(x1)) 201.90/69.68 U11(mark(x0)) 201.90/69.68 U11(active(x0)) 201.90/69.68 U21(mark(x0)) 201.90/69.68 U21(active(x0)) 201.90/69.68 U31(mark(x0)) 201.90/69.68 U31(active(x0)) 201.90/69.68 U41(mark(x0), x1) 201.90/69.68 U41(x0, mark(x1)) 201.90/69.68 U41(active(x0), x1) 201.90/69.68 U41(x0, active(x1)) 201.90/69.68 U42(mark(x0)) 201.90/69.68 U42(active(x0)) 201.90/69.68 isNatIList(mark(x0)) 201.90/69.68 isNatIList(active(x0)) 201.90/69.68 U51(mark(x0), x1) 201.90/69.68 U51(x0, mark(x1)) 201.90/69.68 U51(active(x0), x1) 201.90/69.68 U51(x0, active(x1)) 201.90/69.68 U52(mark(x0)) 201.90/69.68 U52(active(x0)) 201.90/69.68 isNatList(mark(x0)) 201.90/69.68 isNatList(active(x0)) 201.90/69.68 U61(mark(x0), x1) 201.90/69.68 U61(x0, mark(x1)) 201.90/69.68 U61(active(x0), x1) 201.90/69.68 U61(x0, active(x1)) 201.90/69.68 U62(mark(x0)) 201.90/69.68 U62(active(x0)) 201.90/69.68 U71(mark(x0), x1, x2) 201.90/69.68 U71(x0, mark(x1), x2) 201.90/69.68 U71(x0, x1, mark(x2)) 201.90/69.68 U71(active(x0), x1, x2) 201.90/69.68 U71(x0, active(x1), x2) 201.90/69.68 U71(x0, x1, active(x2)) 201.90/69.68 U72(mark(x0), x1) 201.90/69.68 U72(x0, mark(x1)) 201.90/69.68 U72(active(x0), x1) 201.90/69.68 U72(x0, active(x1)) 201.90/69.68 isNat(mark(x0)) 201.90/69.68 isNat(active(x0)) 201.90/69.68 s(mark(x0)) 201.90/69.68 s(active(x0)) 201.90/69.68 length(mark(x0)) 201.90/69.68 length(active(x0)) 201.90/69.68 U81(mark(x0)) 201.90/69.68 U81(active(x0)) 201.90/69.68 U91(mark(x0), x1, x2, x3) 201.90/69.68 U91(x0, mark(x1), x2, x3) 201.90/69.68 U91(x0, x1, mark(x2), x3) 201.90/69.68 U91(x0, x1, x2, mark(x3)) 201.90/69.68 U91(active(x0), x1, x2, x3) 201.90/69.68 U91(x0, active(x1), x2, x3) 201.90/69.68 U91(x0, x1, active(x2), x3) 201.90/69.68 U91(x0, x1, x2, active(x3)) 201.90/69.68 U92(mark(x0), x1, x2, x3) 201.90/69.68 U92(x0, mark(x1), x2, x3) 201.90/69.68 U92(x0, x1, mark(x2), x3) 201.90/69.68 U92(x0, x1, x2, mark(x3)) 201.90/69.68 U92(active(x0), x1, x2, x3) 201.90/69.68 U92(x0, active(x1), x2, x3) 201.90/69.68 U92(x0, x1, active(x2), x3) 201.90/69.68 U92(x0, x1, x2, active(x3)) 201.90/69.68 U93(mark(x0), x1, x2, x3) 201.90/69.68 U93(x0, mark(x1), x2, x3) 201.90/69.68 U93(x0, x1, mark(x2), x3) 201.90/69.68 U93(x0, x1, x2, mark(x3)) 201.90/69.68 U93(active(x0), x1, x2, x3) 201.90/69.68 U93(x0, active(x1), x2, x3) 201.90/69.68 U93(x0, x1, active(x2), x3) 201.90/69.68 U93(x0, x1, x2, active(x3)) 201.90/69.68 take(mark(x0), x1) 201.90/69.68 take(x0, mark(x1)) 201.90/69.68 take(active(x0), x1) 201.90/69.68 take(x0, active(x1)) 201.90/69.68 201.90/69.68 201.90/69.68 ---------------------------------------- 201.90/69.68 201.90/69.68 (58) 201.90/69.68 Obligation: 201.90/69.68 Q DP problem: 201.90/69.68 The TRS P consists of the following rules: 201.90/69.68 201.90/69.68 ISNAT(active(X)) -> ISNAT(X) 201.90/69.68 ISNAT(mark(X)) -> ISNAT(X) 201.90/69.68 201.90/69.68 R is empty. 201.90/69.68 The set Q consists of the following terms: 201.90/69.68 201.90/69.68 active(zeros) 201.90/69.68 active(U11(tt)) 201.90/69.68 active(U21(tt)) 201.90/69.68 active(U31(tt)) 201.90/69.68 active(U41(tt, x0)) 201.90/69.68 active(U42(tt)) 201.90/69.68 active(U51(tt, x0)) 201.90/69.68 active(U52(tt)) 201.90/69.68 active(U61(tt, x0)) 201.90/69.68 active(U62(tt)) 201.90/69.68 active(U71(tt, x0, x1)) 201.90/69.68 active(U72(tt, x0)) 201.90/69.68 active(U81(tt)) 201.90/69.68 active(U91(tt, x0, x1, x2)) 201.90/69.68 active(U92(tt, x0, x1, x2)) 201.90/69.68 active(U93(tt, x0, x1, x2)) 201.90/69.68 active(isNat(0)) 201.90/69.68 active(isNat(length(x0))) 201.90/69.68 active(isNat(s(x0))) 201.90/69.68 active(isNatIList(x0)) 201.90/69.68 active(isNatList(nil)) 201.90/69.68 active(isNatList(cons(x0, x1))) 201.90/69.68 active(isNatList(take(x0, x1))) 201.90/69.68 active(length(nil)) 201.90/69.68 active(length(cons(x0, x1))) 201.90/69.68 active(take(0, x0)) 201.90/69.68 active(take(s(x0), cons(x1, x2))) 201.90/69.68 mark(zeros) 201.90/69.68 mark(cons(x0, x1)) 201.90/69.68 mark(0) 201.90/69.68 mark(U11(x0)) 201.90/69.68 mark(tt) 201.90/69.68 mark(U21(x0)) 201.90/69.68 mark(U31(x0)) 201.90/69.68 mark(U41(x0, x1)) 201.90/69.68 mark(U42(x0)) 201.90/69.68 mark(isNatIList(x0)) 201.90/69.68 mark(U51(x0, x1)) 201.90/69.68 mark(U52(x0)) 201.90/69.68 mark(isNatList(x0)) 201.90/69.68 mark(U61(x0, x1)) 201.90/69.68 mark(U62(x0)) 201.90/69.68 mark(U71(x0, x1, x2)) 201.90/69.68 mark(U72(x0, x1)) 201.90/69.68 mark(isNat(x0)) 201.90/69.68 mark(s(x0)) 201.90/69.68 mark(length(x0)) 201.90/69.68 mark(U81(x0)) 201.90/69.68 mark(nil) 201.90/69.68 mark(U91(x0, x1, x2, x3)) 201.90/69.68 mark(U92(x0, x1, x2, x3)) 201.90/69.68 mark(U93(x0, x1, x2, x3)) 201.90/69.68 mark(take(x0, x1)) 201.90/69.68 201.90/69.68 We have to consider all minimal (P,Q,R)-chains. 201.90/69.68 ---------------------------------------- 201.90/69.68 201.90/69.68 (59) QDPSizeChangeProof (EQUIVALENT) 201.90/69.68 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 201.90/69.68 201.90/69.68 From the DPs we obtained the following set of size-change graphs: 201.90/69.68 *ISNAT(active(X)) -> ISNAT(X) 201.90/69.68 The graph contains the following edges 1 > 1 201.90/69.68 201.90/69.68 201.90/69.68 *ISNAT(mark(X)) -> ISNAT(X) 201.90/69.68 The graph contains the following edges 1 > 1 201.90/69.68 201.90/69.68 201.90/69.68 ---------------------------------------- 201.90/69.68 201.90/69.68 (60) 201.90/69.68 YES 201.90/69.68 201.90/69.68 ---------------------------------------- 201.90/69.68 201.90/69.68 (61) 201.90/69.68 Obligation: 201.90/69.68 Q DP problem: 201.90/69.68 The TRS P consists of the following rules: 201.90/69.68 201.90/69.68 U72^1(X1, mark(X2)) -> U72^1(X1, X2) 201.90/69.68 U72^1(mark(X1), X2) -> U72^1(X1, X2) 201.90/69.68 U72^1(active(X1), X2) -> U72^1(X1, X2) 201.90/69.68 U72^1(X1, active(X2)) -> U72^1(X1, X2) 201.90/69.68 201.90/69.68 The TRS R consists of the following rules: 201.90/69.68 201.90/69.68 active(zeros) -> mark(cons(0, zeros)) 201.90/69.68 active(U11(tt)) -> mark(tt) 201.90/69.68 active(U21(tt)) -> mark(tt) 201.90/69.68 active(U31(tt)) -> mark(tt) 201.90/69.68 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 201.90/69.68 active(U42(tt)) -> mark(tt) 201.90/69.68 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 201.90/69.68 active(U52(tt)) -> mark(tt) 201.90/69.68 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 201.90/69.68 active(U62(tt)) -> mark(tt) 201.90/69.68 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 201.90/69.68 active(U72(tt, L)) -> mark(s(length(L))) 201.90/69.68 active(U81(tt)) -> mark(nil) 201.90/69.68 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 201.90/69.68 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 201.90/69.68 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 201.90/69.68 active(isNat(0)) -> mark(tt) 201.90/69.68 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 201.90/69.68 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 201.90/69.68 active(isNatIList(V)) -> mark(U31(isNatList(V))) 201.90/69.68 active(isNatIList(zeros)) -> mark(tt) 201.90/69.68 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 201.90/69.68 active(isNatList(nil)) -> mark(tt) 201.90/69.68 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 201.90/69.68 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 201.90/69.68 active(length(nil)) -> mark(0) 201.90/69.68 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 201.90/69.68 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 201.90/69.68 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 201.90/69.68 mark(zeros) -> active(zeros) 201.90/69.68 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 201.90/69.68 mark(0) -> active(0) 201.90/69.68 mark(U11(X)) -> active(U11(mark(X))) 201.90/69.68 mark(tt) -> active(tt) 201.90/69.68 mark(U21(X)) -> active(U21(mark(X))) 201.90/69.68 mark(U31(X)) -> active(U31(mark(X))) 201.90/69.68 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 201.90/69.68 mark(U42(X)) -> active(U42(mark(X))) 201.90/69.68 mark(isNatIList(X)) -> active(isNatIList(X)) 201.90/69.68 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 201.90/69.68 mark(U52(X)) -> active(U52(mark(X))) 201.90/69.68 mark(isNatList(X)) -> active(isNatList(X)) 201.90/69.68 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 201.90/69.68 mark(U62(X)) -> active(U62(mark(X))) 201.90/69.68 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 201.90/69.68 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 201.90/69.68 mark(isNat(X)) -> active(isNat(X)) 201.90/69.68 mark(s(X)) -> active(s(mark(X))) 201.90/69.68 mark(length(X)) -> active(length(mark(X))) 201.90/69.68 mark(U81(X)) -> active(U81(mark(X))) 201.90/69.68 mark(nil) -> active(nil) 201.90/69.68 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 201.90/69.68 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 201.90/69.68 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 201.90/69.68 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 201.90/69.68 cons(mark(X1), X2) -> cons(X1, X2) 201.90/69.68 cons(X1, mark(X2)) -> cons(X1, X2) 201.90/69.68 cons(active(X1), X2) -> cons(X1, X2) 201.90/69.68 cons(X1, active(X2)) -> cons(X1, X2) 201.90/69.68 U11(mark(X)) -> U11(X) 201.90/69.68 U11(active(X)) -> U11(X) 201.90/69.68 U21(mark(X)) -> U21(X) 201.90/69.68 U21(active(X)) -> U21(X) 201.90/69.68 U31(mark(X)) -> U31(X) 201.90/69.68 U31(active(X)) -> U31(X) 201.90/69.68 U41(mark(X1), X2) -> U41(X1, X2) 201.90/69.68 U41(X1, mark(X2)) -> U41(X1, X2) 201.90/69.68 U41(active(X1), X2) -> U41(X1, X2) 201.90/69.68 U41(X1, active(X2)) -> U41(X1, X2) 201.90/69.68 U42(mark(X)) -> U42(X) 201.90/69.68 U42(active(X)) -> U42(X) 201.90/69.68 isNatIList(mark(X)) -> isNatIList(X) 201.90/69.68 isNatIList(active(X)) -> isNatIList(X) 201.90/69.68 U51(mark(X1), X2) -> U51(X1, X2) 201.90/69.68 U51(X1, mark(X2)) -> U51(X1, X2) 201.90/69.68 U51(active(X1), X2) -> U51(X1, X2) 201.90/69.68 U51(X1, active(X2)) -> U51(X1, X2) 201.90/69.68 U52(mark(X)) -> U52(X) 201.90/69.68 U52(active(X)) -> U52(X) 201.90/69.68 isNatList(mark(X)) -> isNatList(X) 201.90/69.68 isNatList(active(X)) -> isNatList(X) 201.90/69.68 U61(mark(X1), X2) -> U61(X1, X2) 201.90/69.68 U61(X1, mark(X2)) -> U61(X1, X2) 201.90/69.68 U61(active(X1), X2) -> U61(X1, X2) 201.90/69.68 U61(X1, active(X2)) -> U61(X1, X2) 201.90/69.68 U62(mark(X)) -> U62(X) 201.90/69.68 U62(active(X)) -> U62(X) 201.90/69.68 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.68 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 201.90/69.68 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 201.90/69.68 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 201.90/69.68 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 201.90/69.68 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 201.90/69.68 U72(mark(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, mark(X2)) -> U72(X1, X2) 202.13/69.73 U72(active(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, active(X2)) -> U72(X1, X2) 202.13/69.73 isNat(mark(X)) -> isNat(X) 202.13/69.73 isNat(active(X)) -> isNat(X) 202.13/69.73 s(mark(X)) -> s(X) 202.13/69.73 s(active(X)) -> s(X) 202.13/69.73 length(mark(X)) -> length(X) 202.13/69.73 length(active(X)) -> length(X) 202.13/69.73 U81(mark(X)) -> U81(X) 202.13/69.73 U81(active(X)) -> U81(X) 202.13/69.73 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 take(mark(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, mark(X2)) -> take(X1, X2) 202.13/69.73 take(active(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, active(X2)) -> take(X1, X2) 202.13/69.73 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (62) UsableRulesProof (EQUIVALENT) 202.13/69.73 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (63) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U72^1(X1, mark(X2)) -> U72^1(X1, X2) 202.13/69.73 U72^1(mark(X1), X2) -> U72^1(X1, X2) 202.13/69.73 U72^1(active(X1), X2) -> U72^1(X1, X2) 202.13/69.73 U72^1(X1, active(X2)) -> U72^1(X1, X2) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (64) QReductionProof (EQUIVALENT) 202.13/69.73 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.13/69.73 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (65) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U72^1(X1, mark(X2)) -> U72^1(X1, X2) 202.13/69.73 U72^1(mark(X1), X2) -> U72^1(X1, X2) 202.13/69.73 U72^1(active(X1), X2) -> U72^1(X1, X2) 202.13/69.73 U72^1(X1, active(X2)) -> U72^1(X1, X2) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (66) QDPSizeChangeProof (EQUIVALENT) 202.13/69.73 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.13/69.73 202.13/69.73 From the DPs we obtained the following set of size-change graphs: 202.13/69.73 *U72^1(X1, mark(X2)) -> U72^1(X1, X2) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 > 2 202.13/69.73 202.13/69.73 202.13/69.73 *U72^1(mark(X1), X2) -> U72^1(X1, X2) 202.13/69.73 The graph contains the following edges 1 > 1, 2 >= 2 202.13/69.73 202.13/69.73 202.13/69.73 *U72^1(active(X1), X2) -> U72^1(X1, X2) 202.13/69.73 The graph contains the following edges 1 > 1, 2 >= 2 202.13/69.73 202.13/69.73 202.13/69.73 *U72^1(X1, active(X2)) -> U72^1(X1, X2) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 > 2 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (67) 202.13/69.73 YES 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (68) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U71^1(X1, mark(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(mark(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, mark(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(active(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, active(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, active(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 202.13/69.73 The TRS R consists of the following rules: 202.13/69.73 202.13/69.73 active(zeros) -> mark(cons(0, zeros)) 202.13/69.73 active(U11(tt)) -> mark(tt) 202.13/69.73 active(U21(tt)) -> mark(tt) 202.13/69.73 active(U31(tt)) -> mark(tt) 202.13/69.73 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.13/69.73 active(U42(tt)) -> mark(tt) 202.13/69.73 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.13/69.73 active(U52(tt)) -> mark(tt) 202.13/69.73 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.13/69.73 active(U62(tt)) -> mark(tt) 202.13/69.73 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.13/69.73 active(U72(tt, L)) -> mark(s(length(L))) 202.13/69.73 active(U81(tt)) -> mark(nil) 202.13/69.73 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.13/69.73 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.13/69.73 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.13/69.73 active(isNat(0)) -> mark(tt) 202.13/69.73 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.13/69.73 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.13/69.73 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.13/69.73 active(isNatIList(zeros)) -> mark(tt) 202.13/69.73 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.13/69.73 active(isNatList(nil)) -> mark(tt) 202.13/69.73 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.13/69.73 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.13/69.73 active(length(nil)) -> mark(0) 202.13/69.73 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.13/69.73 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.13/69.73 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.13/69.73 mark(zeros) -> active(zeros) 202.13/69.73 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.13/69.73 mark(0) -> active(0) 202.13/69.73 mark(U11(X)) -> active(U11(mark(X))) 202.13/69.73 mark(tt) -> active(tt) 202.13/69.73 mark(U21(X)) -> active(U21(mark(X))) 202.13/69.73 mark(U31(X)) -> active(U31(mark(X))) 202.13/69.73 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.13/69.73 mark(U42(X)) -> active(U42(mark(X))) 202.13/69.73 mark(isNatIList(X)) -> active(isNatIList(X)) 202.13/69.73 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.13/69.73 mark(U52(X)) -> active(U52(mark(X))) 202.13/69.73 mark(isNatList(X)) -> active(isNatList(X)) 202.13/69.73 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.13/69.73 mark(U62(X)) -> active(U62(mark(X))) 202.13/69.73 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.13/69.73 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.13/69.73 mark(isNat(X)) -> active(isNat(X)) 202.13/69.73 mark(s(X)) -> active(s(mark(X))) 202.13/69.73 mark(length(X)) -> active(length(mark(X))) 202.13/69.73 mark(U81(X)) -> active(U81(mark(X))) 202.13/69.73 mark(nil) -> active(nil) 202.13/69.73 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.13/69.73 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.13/69.73 cons(mark(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, mark(X2)) -> cons(X1, X2) 202.13/69.73 cons(active(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, active(X2)) -> cons(X1, X2) 202.13/69.73 U11(mark(X)) -> U11(X) 202.13/69.73 U11(active(X)) -> U11(X) 202.13/69.73 U21(mark(X)) -> U21(X) 202.13/69.73 U21(active(X)) -> U21(X) 202.13/69.73 U31(mark(X)) -> U31(X) 202.13/69.73 U31(active(X)) -> U31(X) 202.13/69.73 U41(mark(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, mark(X2)) -> U41(X1, X2) 202.13/69.73 U41(active(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, active(X2)) -> U41(X1, X2) 202.13/69.73 U42(mark(X)) -> U42(X) 202.13/69.73 U42(active(X)) -> U42(X) 202.13/69.73 isNatIList(mark(X)) -> isNatIList(X) 202.13/69.73 isNatIList(active(X)) -> isNatIList(X) 202.13/69.73 U51(mark(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, mark(X2)) -> U51(X1, X2) 202.13/69.73 U51(active(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, active(X2)) -> U51(X1, X2) 202.13/69.73 U52(mark(X)) -> U52(X) 202.13/69.73 U52(active(X)) -> U52(X) 202.13/69.73 isNatList(mark(X)) -> isNatList(X) 202.13/69.73 isNatList(active(X)) -> isNatList(X) 202.13/69.73 U61(mark(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, mark(X2)) -> U61(X1, X2) 202.13/69.73 U61(active(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, active(X2)) -> U61(X1, X2) 202.13/69.73 U62(mark(X)) -> U62(X) 202.13/69.73 U62(active(X)) -> U62(X) 202.13/69.73 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.13/69.73 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.13/69.73 U72(mark(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, mark(X2)) -> U72(X1, X2) 202.13/69.73 U72(active(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, active(X2)) -> U72(X1, X2) 202.13/69.73 isNat(mark(X)) -> isNat(X) 202.13/69.73 isNat(active(X)) -> isNat(X) 202.13/69.73 s(mark(X)) -> s(X) 202.13/69.73 s(active(X)) -> s(X) 202.13/69.73 length(mark(X)) -> length(X) 202.13/69.73 length(active(X)) -> length(X) 202.13/69.73 U81(mark(X)) -> U81(X) 202.13/69.73 U81(active(X)) -> U81(X) 202.13/69.73 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 take(mark(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, mark(X2)) -> take(X1, X2) 202.13/69.73 take(active(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, active(X2)) -> take(X1, X2) 202.13/69.73 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (69) UsableRulesProof (EQUIVALENT) 202.13/69.73 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (70) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U71^1(X1, mark(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(mark(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, mark(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(active(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, active(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, active(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (71) QReductionProof (EQUIVALENT) 202.13/69.73 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.13/69.73 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (72) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U71^1(X1, mark(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(mark(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, mark(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(active(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, active(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 U71^1(X1, X2, active(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (73) QDPSizeChangeProof (EQUIVALENT) 202.13/69.73 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.13/69.73 202.13/69.73 From the DPs we obtained the following set of size-change graphs: 202.13/69.73 *U71^1(X1, mark(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 202.13/69.73 202.13/69.73 202.13/69.73 *U71^1(mark(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 202.13/69.73 202.13/69.73 202.13/69.73 *U71^1(X1, X2, mark(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 202.13/69.73 202.13/69.73 202.13/69.73 *U71^1(active(X1), X2, X3) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 202.13/69.73 202.13/69.73 202.13/69.73 *U71^1(X1, active(X2), X3) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 202.13/69.73 202.13/69.73 202.13/69.73 *U71^1(X1, X2, active(X3)) -> U71^1(X1, X2, X3) 202.13/69.73 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (74) 202.13/69.73 YES 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (75) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U62^1(active(X)) -> U62^1(X) 202.13/69.73 U62^1(mark(X)) -> U62^1(X) 202.13/69.73 202.13/69.73 The TRS R consists of the following rules: 202.13/69.73 202.13/69.73 active(zeros) -> mark(cons(0, zeros)) 202.13/69.73 active(U11(tt)) -> mark(tt) 202.13/69.73 active(U21(tt)) -> mark(tt) 202.13/69.73 active(U31(tt)) -> mark(tt) 202.13/69.73 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.13/69.73 active(U42(tt)) -> mark(tt) 202.13/69.73 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.13/69.73 active(U52(tt)) -> mark(tt) 202.13/69.73 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.13/69.73 active(U62(tt)) -> mark(tt) 202.13/69.73 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.13/69.73 active(U72(tt, L)) -> mark(s(length(L))) 202.13/69.73 active(U81(tt)) -> mark(nil) 202.13/69.73 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.13/69.73 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.13/69.73 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.13/69.73 active(isNat(0)) -> mark(tt) 202.13/69.73 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.13/69.73 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.13/69.73 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.13/69.73 active(isNatIList(zeros)) -> mark(tt) 202.13/69.73 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.13/69.73 active(isNatList(nil)) -> mark(tt) 202.13/69.73 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.13/69.73 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.13/69.73 active(length(nil)) -> mark(0) 202.13/69.73 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.13/69.73 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.13/69.73 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.13/69.73 mark(zeros) -> active(zeros) 202.13/69.73 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.13/69.73 mark(0) -> active(0) 202.13/69.73 mark(U11(X)) -> active(U11(mark(X))) 202.13/69.73 mark(tt) -> active(tt) 202.13/69.73 mark(U21(X)) -> active(U21(mark(X))) 202.13/69.73 mark(U31(X)) -> active(U31(mark(X))) 202.13/69.73 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.13/69.73 mark(U42(X)) -> active(U42(mark(X))) 202.13/69.73 mark(isNatIList(X)) -> active(isNatIList(X)) 202.13/69.73 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.13/69.73 mark(U52(X)) -> active(U52(mark(X))) 202.13/69.73 mark(isNatList(X)) -> active(isNatList(X)) 202.13/69.73 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.13/69.73 mark(U62(X)) -> active(U62(mark(X))) 202.13/69.73 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.13/69.73 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.13/69.73 mark(isNat(X)) -> active(isNat(X)) 202.13/69.73 mark(s(X)) -> active(s(mark(X))) 202.13/69.73 mark(length(X)) -> active(length(mark(X))) 202.13/69.73 mark(U81(X)) -> active(U81(mark(X))) 202.13/69.73 mark(nil) -> active(nil) 202.13/69.73 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.13/69.73 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.13/69.73 cons(mark(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, mark(X2)) -> cons(X1, X2) 202.13/69.73 cons(active(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, active(X2)) -> cons(X1, X2) 202.13/69.73 U11(mark(X)) -> U11(X) 202.13/69.73 U11(active(X)) -> U11(X) 202.13/69.73 U21(mark(X)) -> U21(X) 202.13/69.73 U21(active(X)) -> U21(X) 202.13/69.73 U31(mark(X)) -> U31(X) 202.13/69.73 U31(active(X)) -> U31(X) 202.13/69.73 U41(mark(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, mark(X2)) -> U41(X1, X2) 202.13/69.73 U41(active(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, active(X2)) -> U41(X1, X2) 202.13/69.73 U42(mark(X)) -> U42(X) 202.13/69.73 U42(active(X)) -> U42(X) 202.13/69.73 isNatIList(mark(X)) -> isNatIList(X) 202.13/69.73 isNatIList(active(X)) -> isNatIList(X) 202.13/69.73 U51(mark(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, mark(X2)) -> U51(X1, X2) 202.13/69.73 U51(active(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, active(X2)) -> U51(X1, X2) 202.13/69.73 U52(mark(X)) -> U52(X) 202.13/69.73 U52(active(X)) -> U52(X) 202.13/69.73 isNatList(mark(X)) -> isNatList(X) 202.13/69.73 isNatList(active(X)) -> isNatList(X) 202.13/69.73 U61(mark(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, mark(X2)) -> U61(X1, X2) 202.13/69.73 U61(active(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, active(X2)) -> U61(X1, X2) 202.13/69.73 U62(mark(X)) -> U62(X) 202.13/69.73 U62(active(X)) -> U62(X) 202.13/69.73 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.13/69.73 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.13/69.73 U72(mark(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, mark(X2)) -> U72(X1, X2) 202.13/69.73 U72(active(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, active(X2)) -> U72(X1, X2) 202.13/69.73 isNat(mark(X)) -> isNat(X) 202.13/69.73 isNat(active(X)) -> isNat(X) 202.13/69.73 s(mark(X)) -> s(X) 202.13/69.73 s(active(X)) -> s(X) 202.13/69.73 length(mark(X)) -> length(X) 202.13/69.73 length(active(X)) -> length(X) 202.13/69.73 U81(mark(X)) -> U81(X) 202.13/69.73 U81(active(X)) -> U81(X) 202.13/69.73 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 take(mark(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, mark(X2)) -> take(X1, X2) 202.13/69.73 take(active(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, active(X2)) -> take(X1, X2) 202.13/69.73 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (76) UsableRulesProof (EQUIVALENT) 202.13/69.73 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (77) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U62^1(active(X)) -> U62^1(X) 202.13/69.73 U62^1(mark(X)) -> U62^1(X) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (78) QReductionProof (EQUIVALENT) 202.13/69.73 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.13/69.73 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (79) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U62^1(active(X)) -> U62^1(X) 202.13/69.73 U62^1(mark(X)) -> U62^1(X) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (80) QDPSizeChangeProof (EQUIVALENT) 202.13/69.73 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.13/69.73 202.13/69.73 From the DPs we obtained the following set of size-change graphs: 202.13/69.73 *U62^1(active(X)) -> U62^1(X) 202.13/69.73 The graph contains the following edges 1 > 1 202.13/69.73 202.13/69.73 202.13/69.73 *U62^1(mark(X)) -> U62^1(X) 202.13/69.73 The graph contains the following edges 1 > 1 202.13/69.73 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (81) 202.13/69.73 YES 202.13/69.73 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (82) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U61^1(X1, mark(X2)) -> U61^1(X1, X2) 202.13/69.73 U61^1(mark(X1), X2) -> U61^1(X1, X2) 202.13/69.73 U61^1(active(X1), X2) -> U61^1(X1, X2) 202.13/69.73 U61^1(X1, active(X2)) -> U61^1(X1, X2) 202.13/69.73 202.13/69.73 The TRS R consists of the following rules: 202.13/69.73 202.13/69.73 active(zeros) -> mark(cons(0, zeros)) 202.13/69.73 active(U11(tt)) -> mark(tt) 202.13/69.73 active(U21(tt)) -> mark(tt) 202.13/69.73 active(U31(tt)) -> mark(tt) 202.13/69.73 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.13/69.73 active(U42(tt)) -> mark(tt) 202.13/69.73 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.13/69.73 active(U52(tt)) -> mark(tt) 202.13/69.73 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.13/69.73 active(U62(tt)) -> mark(tt) 202.13/69.73 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.13/69.73 active(U72(tt, L)) -> mark(s(length(L))) 202.13/69.73 active(U81(tt)) -> mark(nil) 202.13/69.73 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.13/69.73 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.13/69.73 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.13/69.73 active(isNat(0)) -> mark(tt) 202.13/69.73 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.13/69.73 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.13/69.73 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.13/69.73 active(isNatIList(zeros)) -> mark(tt) 202.13/69.73 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.13/69.73 active(isNatList(nil)) -> mark(tt) 202.13/69.73 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.13/69.73 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.13/69.73 active(length(nil)) -> mark(0) 202.13/69.73 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.13/69.73 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.13/69.73 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.13/69.73 mark(zeros) -> active(zeros) 202.13/69.73 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.13/69.73 mark(0) -> active(0) 202.13/69.73 mark(U11(X)) -> active(U11(mark(X))) 202.13/69.73 mark(tt) -> active(tt) 202.13/69.73 mark(U21(X)) -> active(U21(mark(X))) 202.13/69.73 mark(U31(X)) -> active(U31(mark(X))) 202.13/69.73 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.13/69.73 mark(U42(X)) -> active(U42(mark(X))) 202.13/69.73 mark(isNatIList(X)) -> active(isNatIList(X)) 202.13/69.73 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.13/69.73 mark(U52(X)) -> active(U52(mark(X))) 202.13/69.73 mark(isNatList(X)) -> active(isNatList(X)) 202.13/69.73 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.13/69.73 mark(U62(X)) -> active(U62(mark(X))) 202.13/69.73 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.13/69.73 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.13/69.73 mark(isNat(X)) -> active(isNat(X)) 202.13/69.73 mark(s(X)) -> active(s(mark(X))) 202.13/69.73 mark(length(X)) -> active(length(mark(X))) 202.13/69.73 mark(U81(X)) -> active(U81(mark(X))) 202.13/69.73 mark(nil) -> active(nil) 202.13/69.73 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.13/69.73 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.13/69.73 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.13/69.73 cons(mark(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, mark(X2)) -> cons(X1, X2) 202.13/69.73 cons(active(X1), X2) -> cons(X1, X2) 202.13/69.73 cons(X1, active(X2)) -> cons(X1, X2) 202.13/69.73 U11(mark(X)) -> U11(X) 202.13/69.73 U11(active(X)) -> U11(X) 202.13/69.73 U21(mark(X)) -> U21(X) 202.13/69.73 U21(active(X)) -> U21(X) 202.13/69.73 U31(mark(X)) -> U31(X) 202.13/69.73 U31(active(X)) -> U31(X) 202.13/69.73 U41(mark(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, mark(X2)) -> U41(X1, X2) 202.13/69.73 U41(active(X1), X2) -> U41(X1, X2) 202.13/69.73 U41(X1, active(X2)) -> U41(X1, X2) 202.13/69.73 U42(mark(X)) -> U42(X) 202.13/69.73 U42(active(X)) -> U42(X) 202.13/69.73 isNatIList(mark(X)) -> isNatIList(X) 202.13/69.73 isNatIList(active(X)) -> isNatIList(X) 202.13/69.73 U51(mark(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, mark(X2)) -> U51(X1, X2) 202.13/69.73 U51(active(X1), X2) -> U51(X1, X2) 202.13/69.73 U51(X1, active(X2)) -> U51(X1, X2) 202.13/69.73 U52(mark(X)) -> U52(X) 202.13/69.73 U52(active(X)) -> U52(X) 202.13/69.73 isNatList(mark(X)) -> isNatList(X) 202.13/69.73 isNatList(active(X)) -> isNatList(X) 202.13/69.73 U61(mark(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, mark(X2)) -> U61(X1, X2) 202.13/69.73 U61(active(X1), X2) -> U61(X1, X2) 202.13/69.73 U61(X1, active(X2)) -> U61(X1, X2) 202.13/69.73 U62(mark(X)) -> U62(X) 202.13/69.73 U62(active(X)) -> U62(X) 202.13/69.73 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.13/69.73 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.13/69.73 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.13/69.73 U72(mark(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, mark(X2)) -> U72(X1, X2) 202.13/69.73 U72(active(X1), X2) -> U72(X1, X2) 202.13/69.73 U72(X1, active(X2)) -> U72(X1, X2) 202.13/69.73 isNat(mark(X)) -> isNat(X) 202.13/69.73 isNat(active(X)) -> isNat(X) 202.13/69.73 s(mark(X)) -> s(X) 202.13/69.73 s(active(X)) -> s(X) 202.13/69.73 length(mark(X)) -> length(X) 202.13/69.73 length(active(X)) -> length(X) 202.13/69.73 U81(mark(X)) -> U81(X) 202.13/69.73 U81(active(X)) -> U81(X) 202.13/69.73 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.73 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.13/69.73 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.73 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.13/69.73 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.73 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.13/69.73 take(mark(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, mark(X2)) -> take(X1, X2) 202.13/69.73 take(active(X1), X2) -> take(X1, X2) 202.13/69.73 take(X1, active(X2)) -> take(X1, X2) 202.13/69.73 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.73 mark(U62(x0)) 202.13/69.73 mark(U71(x0, x1, x2)) 202.13/69.73 mark(U72(x0, x1)) 202.13/69.73 mark(isNat(x0)) 202.13/69.73 mark(s(x0)) 202.13/69.73 mark(length(x0)) 202.13/69.73 mark(U81(x0)) 202.13/69.73 mark(nil) 202.13/69.73 mark(U91(x0, x1, x2, x3)) 202.13/69.73 mark(U92(x0, x1, x2, x3)) 202.13/69.73 mark(U93(x0, x1, x2, x3)) 202.13/69.73 mark(take(x0, x1)) 202.13/69.73 cons(mark(x0), x1) 202.13/69.73 cons(x0, mark(x1)) 202.13/69.73 cons(active(x0), x1) 202.13/69.73 cons(x0, active(x1)) 202.13/69.73 U11(mark(x0)) 202.13/69.73 U11(active(x0)) 202.13/69.73 U21(mark(x0)) 202.13/69.73 U21(active(x0)) 202.13/69.73 U31(mark(x0)) 202.13/69.73 U31(active(x0)) 202.13/69.73 U41(mark(x0), x1) 202.13/69.73 U41(x0, mark(x1)) 202.13/69.73 U41(active(x0), x1) 202.13/69.73 U41(x0, active(x1)) 202.13/69.73 U42(mark(x0)) 202.13/69.73 U42(active(x0)) 202.13/69.73 isNatIList(mark(x0)) 202.13/69.73 isNatIList(active(x0)) 202.13/69.73 U51(mark(x0), x1) 202.13/69.73 U51(x0, mark(x1)) 202.13/69.73 U51(active(x0), x1) 202.13/69.73 U51(x0, active(x1)) 202.13/69.73 U52(mark(x0)) 202.13/69.73 U52(active(x0)) 202.13/69.73 isNatList(mark(x0)) 202.13/69.73 isNatList(active(x0)) 202.13/69.73 U61(mark(x0), x1) 202.13/69.73 U61(x0, mark(x1)) 202.13/69.73 U61(active(x0), x1) 202.13/69.73 U61(x0, active(x1)) 202.13/69.73 U62(mark(x0)) 202.13/69.73 U62(active(x0)) 202.13/69.73 U71(mark(x0), x1, x2) 202.13/69.73 U71(x0, mark(x1), x2) 202.13/69.73 U71(x0, x1, mark(x2)) 202.13/69.73 U71(active(x0), x1, x2) 202.13/69.73 U71(x0, active(x1), x2) 202.13/69.73 U71(x0, x1, active(x2)) 202.13/69.73 U72(mark(x0), x1) 202.13/69.73 U72(x0, mark(x1)) 202.13/69.73 U72(active(x0), x1) 202.13/69.73 U72(x0, active(x1)) 202.13/69.73 isNat(mark(x0)) 202.13/69.73 isNat(active(x0)) 202.13/69.73 s(mark(x0)) 202.13/69.73 s(active(x0)) 202.13/69.73 length(mark(x0)) 202.13/69.73 length(active(x0)) 202.13/69.73 U81(mark(x0)) 202.13/69.73 U81(active(x0)) 202.13/69.73 U91(mark(x0), x1, x2, x3) 202.13/69.73 U91(x0, mark(x1), x2, x3) 202.13/69.73 U91(x0, x1, mark(x2), x3) 202.13/69.73 U91(x0, x1, x2, mark(x3)) 202.13/69.73 U91(active(x0), x1, x2, x3) 202.13/69.73 U91(x0, active(x1), x2, x3) 202.13/69.73 U91(x0, x1, active(x2), x3) 202.13/69.73 U91(x0, x1, x2, active(x3)) 202.13/69.73 U92(mark(x0), x1, x2, x3) 202.13/69.73 U92(x0, mark(x1), x2, x3) 202.13/69.73 U92(x0, x1, mark(x2), x3) 202.13/69.73 U92(x0, x1, x2, mark(x3)) 202.13/69.73 U92(active(x0), x1, x2, x3) 202.13/69.73 U92(x0, active(x1), x2, x3) 202.13/69.73 U92(x0, x1, active(x2), x3) 202.13/69.73 U92(x0, x1, x2, active(x3)) 202.13/69.73 U93(mark(x0), x1, x2, x3) 202.13/69.73 U93(x0, mark(x1), x2, x3) 202.13/69.73 U93(x0, x1, mark(x2), x3) 202.13/69.73 U93(x0, x1, x2, mark(x3)) 202.13/69.73 U93(active(x0), x1, x2, x3) 202.13/69.73 U93(x0, active(x1), x2, x3) 202.13/69.73 U93(x0, x1, active(x2), x3) 202.13/69.73 U93(x0, x1, x2, active(x3)) 202.13/69.73 take(mark(x0), x1) 202.13/69.73 take(x0, mark(x1)) 202.13/69.73 take(active(x0), x1) 202.13/69.73 take(x0, active(x1)) 202.13/69.73 202.13/69.73 We have to consider all minimal (P,Q,R)-chains. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (83) UsableRulesProof (EQUIVALENT) 202.13/69.73 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.13/69.73 ---------------------------------------- 202.13/69.73 202.13/69.73 (84) 202.13/69.73 Obligation: 202.13/69.73 Q DP problem: 202.13/69.73 The TRS P consists of the following rules: 202.13/69.73 202.13/69.73 U61^1(X1, mark(X2)) -> U61^1(X1, X2) 202.13/69.73 U61^1(mark(X1), X2) -> U61^1(X1, X2) 202.13/69.73 U61^1(active(X1), X2) -> U61^1(X1, X2) 202.13/69.73 U61^1(X1, active(X2)) -> U61^1(X1, X2) 202.13/69.73 202.13/69.73 R is empty. 202.13/69.73 The set Q consists of the following terms: 202.13/69.73 202.13/69.73 active(zeros) 202.13/69.73 active(U11(tt)) 202.13/69.73 active(U21(tt)) 202.13/69.73 active(U31(tt)) 202.13/69.73 active(U41(tt, x0)) 202.13/69.73 active(U42(tt)) 202.13/69.73 active(U51(tt, x0)) 202.13/69.73 active(U52(tt)) 202.13/69.73 active(U61(tt, x0)) 202.13/69.73 active(U62(tt)) 202.13/69.73 active(U71(tt, x0, x1)) 202.13/69.73 active(U72(tt, x0)) 202.13/69.73 active(U81(tt)) 202.13/69.73 active(U91(tt, x0, x1, x2)) 202.13/69.73 active(U92(tt, x0, x1, x2)) 202.13/69.73 active(U93(tt, x0, x1, x2)) 202.13/69.73 active(isNat(0)) 202.13/69.73 active(isNat(length(x0))) 202.13/69.73 active(isNat(s(x0))) 202.13/69.73 active(isNatIList(x0)) 202.13/69.73 active(isNatList(nil)) 202.13/69.73 active(isNatList(cons(x0, x1))) 202.13/69.73 active(isNatList(take(x0, x1))) 202.13/69.73 active(length(nil)) 202.13/69.73 active(length(cons(x0, x1))) 202.13/69.73 active(take(0, x0)) 202.13/69.73 active(take(s(x0), cons(x1, x2))) 202.13/69.73 mark(zeros) 202.13/69.73 mark(cons(x0, x1)) 202.13/69.73 mark(0) 202.13/69.73 mark(U11(x0)) 202.13/69.73 mark(tt) 202.13/69.73 mark(U21(x0)) 202.13/69.73 mark(U31(x0)) 202.13/69.73 mark(U41(x0, x1)) 202.13/69.73 mark(U42(x0)) 202.13/69.73 mark(isNatIList(x0)) 202.13/69.73 mark(U51(x0, x1)) 202.13/69.73 mark(U52(x0)) 202.13/69.73 mark(isNatList(x0)) 202.13/69.73 mark(U61(x0, x1)) 202.13/69.74 mark(U62(x0)) 202.13/69.74 mark(U71(x0, x1, x2)) 202.13/69.74 mark(U72(x0, x1)) 202.13/69.74 mark(isNat(x0)) 202.13/69.74 mark(s(x0)) 202.13/69.74 mark(length(x0)) 202.13/69.74 mark(U81(x0)) 202.13/69.74 mark(nil) 202.13/69.74 mark(U91(x0, x1, x2, x3)) 202.13/69.74 mark(U92(x0, x1, x2, x3)) 202.13/69.74 mark(U93(x0, x1, x2, x3)) 202.13/69.74 mark(take(x0, x1)) 202.13/69.74 cons(mark(x0), x1) 202.13/69.74 cons(x0, mark(x1)) 202.13/69.74 cons(active(x0), x1) 202.13/69.74 cons(x0, active(x1)) 202.13/69.74 U11(mark(x0)) 202.13/69.74 U11(active(x0)) 202.13/69.74 U21(mark(x0)) 202.13/69.74 U21(active(x0)) 202.13/69.74 U31(mark(x0)) 202.13/69.74 U31(active(x0)) 202.13/69.74 U41(mark(x0), x1) 202.13/69.74 U41(x0, mark(x1)) 202.13/69.74 U41(active(x0), x1) 202.13/69.74 U41(x0, active(x1)) 202.13/69.74 U42(mark(x0)) 202.13/69.74 U42(active(x0)) 202.13/69.74 isNatIList(mark(x0)) 202.13/69.74 isNatIList(active(x0)) 202.13/69.74 U51(mark(x0), x1) 202.13/69.74 U51(x0, mark(x1)) 202.13/69.74 U51(active(x0), x1) 202.13/69.74 U51(x0, active(x1)) 202.13/69.74 U52(mark(x0)) 202.13/69.74 U52(active(x0)) 202.13/69.74 isNatList(mark(x0)) 202.13/69.74 isNatList(active(x0)) 202.13/69.74 U61(mark(x0), x1) 202.13/69.74 U61(x0, mark(x1)) 202.13/69.74 U61(active(x0), x1) 202.13/69.74 U61(x0, active(x1)) 202.13/69.74 U62(mark(x0)) 202.13/69.74 U62(active(x0)) 202.13/69.74 U71(mark(x0), x1, x2) 202.13/69.74 U71(x0, mark(x1), x2) 202.13/69.74 U71(x0, x1, mark(x2)) 202.13/69.74 U71(active(x0), x1, x2) 202.13/69.74 U71(x0, active(x1), x2) 202.13/69.74 U71(x0, x1, active(x2)) 202.13/69.74 U72(mark(x0), x1) 202.13/69.74 U72(x0, mark(x1)) 202.13/69.74 U72(active(x0), x1) 202.13/69.74 U72(x0, active(x1)) 202.13/69.74 isNat(mark(x0)) 202.13/69.74 isNat(active(x0)) 202.13/69.74 s(mark(x0)) 202.13/69.74 s(active(x0)) 202.13/69.74 length(mark(x0)) 202.13/69.74 length(active(x0)) 202.13/69.74 U81(mark(x0)) 202.13/69.74 U81(active(x0)) 202.13/69.74 U91(mark(x0), x1, x2, x3) 202.13/69.74 U91(x0, mark(x1), x2, x3) 202.13/69.74 U91(x0, x1, mark(x2), x3) 202.13/69.74 U91(x0, x1, x2, mark(x3)) 202.13/69.74 U91(active(x0), x1, x2, x3) 202.13/69.74 U91(x0, active(x1), x2, x3) 202.13/69.74 U91(x0, x1, active(x2), x3) 202.13/69.74 U91(x0, x1, x2, active(x3)) 202.13/69.74 U92(mark(x0), x1, x2, x3) 202.13/69.74 U92(x0, mark(x1), x2, x3) 202.13/69.74 U92(x0, x1, mark(x2), x3) 202.13/69.74 U92(x0, x1, x2, mark(x3)) 202.13/69.74 U92(active(x0), x1, x2, x3) 202.13/69.74 U92(x0, active(x1), x2, x3) 202.13/69.74 U92(x0, x1, active(x2), x3) 202.13/69.74 U92(x0, x1, x2, active(x3)) 202.13/69.74 U93(mark(x0), x1, x2, x3) 202.13/69.74 U93(x0, mark(x1), x2, x3) 202.13/69.74 U93(x0, x1, mark(x2), x3) 202.13/69.74 U93(x0, x1, x2, mark(x3)) 202.13/69.74 U93(active(x0), x1, x2, x3) 202.13/69.74 U93(x0, active(x1), x2, x3) 202.13/69.74 U93(x0, x1, active(x2), x3) 202.13/69.74 U93(x0, x1, x2, active(x3)) 202.13/69.74 take(mark(x0), x1) 202.13/69.74 take(x0, mark(x1)) 202.13/69.74 take(active(x0), x1) 202.13/69.74 take(x0, active(x1)) 202.13/69.74 202.13/69.74 We have to consider all minimal (P,Q,R)-chains. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (85) QReductionProof (EQUIVALENT) 202.13/69.74 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.13/69.74 202.13/69.74 cons(mark(x0), x1) 202.13/69.74 cons(x0, mark(x1)) 202.13/69.74 cons(active(x0), x1) 202.13/69.74 cons(x0, active(x1)) 202.13/69.74 U11(mark(x0)) 202.13/69.74 U11(active(x0)) 202.13/69.74 U21(mark(x0)) 202.13/69.74 U21(active(x0)) 202.13/69.74 U31(mark(x0)) 202.13/69.74 U31(active(x0)) 202.13/69.74 U41(mark(x0), x1) 202.13/69.74 U41(x0, mark(x1)) 202.13/69.74 U41(active(x0), x1) 202.13/69.74 U41(x0, active(x1)) 202.13/69.74 U42(mark(x0)) 202.13/69.74 U42(active(x0)) 202.13/69.74 isNatIList(mark(x0)) 202.13/69.74 isNatIList(active(x0)) 202.13/69.74 U51(mark(x0), x1) 202.13/69.74 U51(x0, mark(x1)) 202.13/69.74 U51(active(x0), x1) 202.13/69.74 U51(x0, active(x1)) 202.13/69.74 U52(mark(x0)) 202.13/69.74 U52(active(x0)) 202.13/69.74 isNatList(mark(x0)) 202.13/69.74 isNatList(active(x0)) 202.13/69.74 U61(mark(x0), x1) 202.13/69.74 U61(x0, mark(x1)) 202.13/69.74 U61(active(x0), x1) 202.13/69.74 U61(x0, active(x1)) 202.13/69.74 U62(mark(x0)) 202.13/69.74 U62(active(x0)) 202.13/69.74 U71(mark(x0), x1, x2) 202.13/69.74 U71(x0, mark(x1), x2) 202.13/69.74 U71(x0, x1, mark(x2)) 202.13/69.74 U71(active(x0), x1, x2) 202.13/69.74 U71(x0, active(x1), x2) 202.13/69.74 U71(x0, x1, active(x2)) 202.13/69.74 U72(mark(x0), x1) 202.13/69.74 U72(x0, mark(x1)) 202.13/69.74 U72(active(x0), x1) 202.13/69.74 U72(x0, active(x1)) 202.13/69.74 isNat(mark(x0)) 202.13/69.74 isNat(active(x0)) 202.13/69.74 s(mark(x0)) 202.13/69.74 s(active(x0)) 202.13/69.74 length(mark(x0)) 202.13/69.74 length(active(x0)) 202.13/69.74 U81(mark(x0)) 202.13/69.74 U81(active(x0)) 202.13/69.74 U91(mark(x0), x1, x2, x3) 202.13/69.74 U91(x0, mark(x1), x2, x3) 202.13/69.74 U91(x0, x1, mark(x2), x3) 202.13/69.74 U91(x0, x1, x2, mark(x3)) 202.13/69.74 U91(active(x0), x1, x2, x3) 202.13/69.74 U91(x0, active(x1), x2, x3) 202.13/69.74 U91(x0, x1, active(x2), x3) 202.13/69.74 U91(x0, x1, x2, active(x3)) 202.13/69.74 U92(mark(x0), x1, x2, x3) 202.13/69.74 U92(x0, mark(x1), x2, x3) 202.13/69.74 U92(x0, x1, mark(x2), x3) 202.13/69.74 U92(x0, x1, x2, mark(x3)) 202.13/69.74 U92(active(x0), x1, x2, x3) 202.13/69.74 U92(x0, active(x1), x2, x3) 202.13/69.74 U92(x0, x1, active(x2), x3) 202.13/69.74 U92(x0, x1, x2, active(x3)) 202.13/69.74 U93(mark(x0), x1, x2, x3) 202.13/69.74 U93(x0, mark(x1), x2, x3) 202.13/69.74 U93(x0, x1, mark(x2), x3) 202.13/69.74 U93(x0, x1, x2, mark(x3)) 202.13/69.74 U93(active(x0), x1, x2, x3) 202.13/69.74 U93(x0, active(x1), x2, x3) 202.13/69.74 U93(x0, x1, active(x2), x3) 202.13/69.74 U93(x0, x1, x2, active(x3)) 202.13/69.74 take(mark(x0), x1) 202.13/69.74 take(x0, mark(x1)) 202.13/69.74 take(active(x0), x1) 202.13/69.74 take(x0, active(x1)) 202.13/69.74 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (86) 202.13/69.74 Obligation: 202.13/69.74 Q DP problem: 202.13/69.74 The TRS P consists of the following rules: 202.13/69.74 202.13/69.74 U61^1(X1, mark(X2)) -> U61^1(X1, X2) 202.13/69.74 U61^1(mark(X1), X2) -> U61^1(X1, X2) 202.13/69.74 U61^1(active(X1), X2) -> U61^1(X1, X2) 202.13/69.74 U61^1(X1, active(X2)) -> U61^1(X1, X2) 202.13/69.74 202.13/69.74 R is empty. 202.13/69.74 The set Q consists of the following terms: 202.13/69.74 202.13/69.74 active(zeros) 202.13/69.74 active(U11(tt)) 202.13/69.74 active(U21(tt)) 202.13/69.74 active(U31(tt)) 202.13/69.74 active(U41(tt, x0)) 202.13/69.74 active(U42(tt)) 202.13/69.74 active(U51(tt, x0)) 202.13/69.74 active(U52(tt)) 202.13/69.74 active(U61(tt, x0)) 202.13/69.74 active(U62(tt)) 202.13/69.74 active(U71(tt, x0, x1)) 202.13/69.74 active(U72(tt, x0)) 202.13/69.74 active(U81(tt)) 202.13/69.74 active(U91(tt, x0, x1, x2)) 202.13/69.74 active(U92(tt, x0, x1, x2)) 202.13/69.74 active(U93(tt, x0, x1, x2)) 202.13/69.74 active(isNat(0)) 202.13/69.74 active(isNat(length(x0))) 202.13/69.74 active(isNat(s(x0))) 202.13/69.74 active(isNatIList(x0)) 202.13/69.74 active(isNatList(nil)) 202.13/69.74 active(isNatList(cons(x0, x1))) 202.13/69.74 active(isNatList(take(x0, x1))) 202.13/69.74 active(length(nil)) 202.13/69.74 active(length(cons(x0, x1))) 202.13/69.74 active(take(0, x0)) 202.13/69.74 active(take(s(x0), cons(x1, x2))) 202.13/69.74 mark(zeros) 202.13/69.74 mark(cons(x0, x1)) 202.13/69.74 mark(0) 202.13/69.74 mark(U11(x0)) 202.13/69.74 mark(tt) 202.13/69.74 mark(U21(x0)) 202.13/69.74 mark(U31(x0)) 202.13/69.74 mark(U41(x0, x1)) 202.13/69.74 mark(U42(x0)) 202.13/69.74 mark(isNatIList(x0)) 202.13/69.74 mark(U51(x0, x1)) 202.13/69.74 mark(U52(x0)) 202.13/69.74 mark(isNatList(x0)) 202.13/69.74 mark(U61(x0, x1)) 202.13/69.74 mark(U62(x0)) 202.13/69.74 mark(U71(x0, x1, x2)) 202.13/69.74 mark(U72(x0, x1)) 202.13/69.74 mark(isNat(x0)) 202.13/69.74 mark(s(x0)) 202.13/69.74 mark(length(x0)) 202.13/69.74 mark(U81(x0)) 202.13/69.74 mark(nil) 202.13/69.74 mark(U91(x0, x1, x2, x3)) 202.13/69.74 mark(U92(x0, x1, x2, x3)) 202.13/69.74 mark(U93(x0, x1, x2, x3)) 202.13/69.74 mark(take(x0, x1)) 202.13/69.74 202.13/69.74 We have to consider all minimal (P,Q,R)-chains. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (87) QDPSizeChangeProof (EQUIVALENT) 202.13/69.74 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.13/69.74 202.13/69.74 From the DPs we obtained the following set of size-change graphs: 202.13/69.74 *U61^1(X1, mark(X2)) -> U61^1(X1, X2) 202.13/69.74 The graph contains the following edges 1 >= 1, 2 > 2 202.13/69.74 202.13/69.74 202.13/69.74 *U61^1(mark(X1), X2) -> U61^1(X1, X2) 202.13/69.74 The graph contains the following edges 1 > 1, 2 >= 2 202.13/69.74 202.13/69.74 202.13/69.74 *U61^1(active(X1), X2) -> U61^1(X1, X2) 202.13/69.74 The graph contains the following edges 1 > 1, 2 >= 2 202.13/69.74 202.13/69.74 202.13/69.74 *U61^1(X1, active(X2)) -> U61^1(X1, X2) 202.13/69.74 The graph contains the following edges 1 >= 1, 2 > 2 202.13/69.74 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (88) 202.13/69.74 YES 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (89) 202.13/69.74 Obligation: 202.13/69.74 Q DP problem: 202.13/69.74 The TRS P consists of the following rules: 202.13/69.74 202.13/69.74 ISNATLIST(active(X)) -> ISNATLIST(X) 202.13/69.74 ISNATLIST(mark(X)) -> ISNATLIST(X) 202.13/69.74 202.13/69.74 The TRS R consists of the following rules: 202.13/69.74 202.13/69.74 active(zeros) -> mark(cons(0, zeros)) 202.13/69.74 active(U11(tt)) -> mark(tt) 202.13/69.74 active(U21(tt)) -> mark(tt) 202.13/69.74 active(U31(tt)) -> mark(tt) 202.13/69.74 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.13/69.74 active(U42(tt)) -> mark(tt) 202.13/69.74 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.13/69.74 active(U52(tt)) -> mark(tt) 202.13/69.74 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.13/69.74 active(U62(tt)) -> mark(tt) 202.13/69.74 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.13/69.74 active(U72(tt, L)) -> mark(s(length(L))) 202.13/69.74 active(U81(tt)) -> mark(nil) 202.13/69.74 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.13/69.74 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.13/69.74 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.13/69.74 active(isNat(0)) -> mark(tt) 202.13/69.74 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.13/69.74 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.13/69.74 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.13/69.74 active(isNatIList(zeros)) -> mark(tt) 202.13/69.74 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.13/69.74 active(isNatList(nil)) -> mark(tt) 202.13/69.74 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.13/69.74 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.13/69.74 active(length(nil)) -> mark(0) 202.13/69.74 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.13/69.74 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.13/69.74 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.13/69.74 mark(zeros) -> active(zeros) 202.13/69.74 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.13/69.74 mark(0) -> active(0) 202.13/69.74 mark(U11(X)) -> active(U11(mark(X))) 202.13/69.74 mark(tt) -> active(tt) 202.13/69.74 mark(U21(X)) -> active(U21(mark(X))) 202.13/69.74 mark(U31(X)) -> active(U31(mark(X))) 202.13/69.74 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.13/69.74 mark(U42(X)) -> active(U42(mark(X))) 202.13/69.74 mark(isNatIList(X)) -> active(isNatIList(X)) 202.13/69.74 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.13/69.74 mark(U52(X)) -> active(U52(mark(X))) 202.13/69.74 mark(isNatList(X)) -> active(isNatList(X)) 202.13/69.74 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.13/69.74 mark(U62(X)) -> active(U62(mark(X))) 202.13/69.74 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.13/69.74 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.13/69.74 mark(isNat(X)) -> active(isNat(X)) 202.13/69.74 mark(s(X)) -> active(s(mark(X))) 202.13/69.74 mark(length(X)) -> active(length(mark(X))) 202.13/69.74 mark(U81(X)) -> active(U81(mark(X))) 202.13/69.74 mark(nil) -> active(nil) 202.13/69.74 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.13/69.74 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.13/69.74 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.13/69.74 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.13/69.74 cons(mark(X1), X2) -> cons(X1, X2) 202.13/69.74 cons(X1, mark(X2)) -> cons(X1, X2) 202.13/69.74 cons(active(X1), X2) -> cons(X1, X2) 202.13/69.74 cons(X1, active(X2)) -> cons(X1, X2) 202.13/69.74 U11(mark(X)) -> U11(X) 202.13/69.74 U11(active(X)) -> U11(X) 202.13/69.74 U21(mark(X)) -> U21(X) 202.13/69.74 U21(active(X)) -> U21(X) 202.13/69.74 U31(mark(X)) -> U31(X) 202.13/69.74 U31(active(X)) -> U31(X) 202.13/69.74 U41(mark(X1), X2) -> U41(X1, X2) 202.13/69.74 U41(X1, mark(X2)) -> U41(X1, X2) 202.13/69.74 U41(active(X1), X2) -> U41(X1, X2) 202.13/69.74 U41(X1, active(X2)) -> U41(X1, X2) 202.13/69.74 U42(mark(X)) -> U42(X) 202.13/69.74 U42(active(X)) -> U42(X) 202.13/69.74 isNatIList(mark(X)) -> isNatIList(X) 202.13/69.74 isNatIList(active(X)) -> isNatIList(X) 202.13/69.74 U51(mark(X1), X2) -> U51(X1, X2) 202.13/69.74 U51(X1, mark(X2)) -> U51(X1, X2) 202.13/69.74 U51(active(X1), X2) -> U51(X1, X2) 202.13/69.74 U51(X1, active(X2)) -> U51(X1, X2) 202.13/69.74 U52(mark(X)) -> U52(X) 202.13/69.74 U52(active(X)) -> U52(X) 202.13/69.74 isNatList(mark(X)) -> isNatList(X) 202.13/69.74 isNatList(active(X)) -> isNatList(X) 202.13/69.74 U61(mark(X1), X2) -> U61(X1, X2) 202.13/69.74 U61(X1, mark(X2)) -> U61(X1, X2) 202.13/69.74 U61(active(X1), X2) -> U61(X1, X2) 202.13/69.74 U61(X1, active(X2)) -> U61(X1, X2) 202.13/69.74 U62(mark(X)) -> U62(X) 202.13/69.74 U62(active(X)) -> U62(X) 202.13/69.74 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.74 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.13/69.74 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.13/69.74 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.13/69.74 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.13/69.74 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.13/69.74 U72(mark(X1), X2) -> U72(X1, X2) 202.13/69.74 U72(X1, mark(X2)) -> U72(X1, X2) 202.13/69.74 U72(active(X1), X2) -> U72(X1, X2) 202.13/69.74 U72(X1, active(X2)) -> U72(X1, X2) 202.13/69.74 isNat(mark(X)) -> isNat(X) 202.13/69.74 isNat(active(X)) -> isNat(X) 202.13/69.74 s(mark(X)) -> s(X) 202.13/69.74 s(active(X)) -> s(X) 202.13/69.74 length(mark(X)) -> length(X) 202.13/69.74 length(active(X)) -> length(X) 202.13/69.74 U81(mark(X)) -> U81(X) 202.13/69.74 U81(active(X)) -> U81(X) 202.13/69.74 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.13/69.74 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.13/69.74 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.13/69.74 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.13/69.74 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.13/69.74 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.13/69.74 take(mark(X1), X2) -> take(X1, X2) 202.13/69.74 take(X1, mark(X2)) -> take(X1, X2) 202.13/69.74 take(active(X1), X2) -> take(X1, X2) 202.13/69.74 take(X1, active(X2)) -> take(X1, X2) 202.13/69.74 202.13/69.74 The set Q consists of the following terms: 202.13/69.74 202.13/69.74 active(zeros) 202.13/69.74 active(U11(tt)) 202.13/69.74 active(U21(tt)) 202.13/69.74 active(U31(tt)) 202.13/69.74 active(U41(tt, x0)) 202.13/69.74 active(U42(tt)) 202.13/69.74 active(U51(tt, x0)) 202.13/69.74 active(U52(tt)) 202.13/69.74 active(U61(tt, x0)) 202.13/69.74 active(U62(tt)) 202.13/69.74 active(U71(tt, x0, x1)) 202.13/69.74 active(U72(tt, x0)) 202.13/69.74 active(U81(tt)) 202.13/69.74 active(U91(tt, x0, x1, x2)) 202.13/69.74 active(U92(tt, x0, x1, x2)) 202.13/69.74 active(U93(tt, x0, x1, x2)) 202.13/69.74 active(isNat(0)) 202.13/69.74 active(isNat(length(x0))) 202.13/69.74 active(isNat(s(x0))) 202.13/69.74 active(isNatIList(x0)) 202.13/69.74 active(isNatList(nil)) 202.13/69.74 active(isNatList(cons(x0, x1))) 202.13/69.74 active(isNatList(take(x0, x1))) 202.13/69.74 active(length(nil)) 202.13/69.74 active(length(cons(x0, x1))) 202.13/69.74 active(take(0, x0)) 202.13/69.74 active(take(s(x0), cons(x1, x2))) 202.13/69.74 mark(zeros) 202.13/69.74 mark(cons(x0, x1)) 202.13/69.74 mark(0) 202.13/69.74 mark(U11(x0)) 202.13/69.74 mark(tt) 202.13/69.74 mark(U21(x0)) 202.13/69.74 mark(U31(x0)) 202.13/69.74 mark(U41(x0, x1)) 202.13/69.74 mark(U42(x0)) 202.13/69.74 mark(isNatIList(x0)) 202.13/69.74 mark(U51(x0, x1)) 202.13/69.74 mark(U52(x0)) 202.13/69.74 mark(isNatList(x0)) 202.13/69.74 mark(U61(x0, x1)) 202.13/69.74 mark(U62(x0)) 202.13/69.74 mark(U71(x0, x1, x2)) 202.13/69.74 mark(U72(x0, x1)) 202.13/69.74 mark(isNat(x0)) 202.13/69.74 mark(s(x0)) 202.13/69.74 mark(length(x0)) 202.13/69.74 mark(U81(x0)) 202.13/69.74 mark(nil) 202.13/69.74 mark(U91(x0, x1, x2, x3)) 202.13/69.74 mark(U92(x0, x1, x2, x3)) 202.13/69.74 mark(U93(x0, x1, x2, x3)) 202.13/69.74 mark(take(x0, x1)) 202.13/69.74 cons(mark(x0), x1) 202.13/69.74 cons(x0, mark(x1)) 202.13/69.74 cons(active(x0), x1) 202.13/69.74 cons(x0, active(x1)) 202.13/69.74 U11(mark(x0)) 202.13/69.74 U11(active(x0)) 202.13/69.74 U21(mark(x0)) 202.13/69.74 U21(active(x0)) 202.13/69.74 U31(mark(x0)) 202.13/69.74 U31(active(x0)) 202.13/69.74 U41(mark(x0), x1) 202.13/69.74 U41(x0, mark(x1)) 202.13/69.74 U41(active(x0), x1) 202.13/69.74 U41(x0, active(x1)) 202.13/69.74 U42(mark(x0)) 202.13/69.74 U42(active(x0)) 202.13/69.74 isNatIList(mark(x0)) 202.13/69.74 isNatIList(active(x0)) 202.13/69.74 U51(mark(x0), x1) 202.13/69.74 U51(x0, mark(x1)) 202.13/69.74 U51(active(x0), x1) 202.13/69.74 U51(x0, active(x1)) 202.13/69.74 U52(mark(x0)) 202.13/69.74 U52(active(x0)) 202.13/69.74 isNatList(mark(x0)) 202.13/69.74 isNatList(active(x0)) 202.13/69.74 U61(mark(x0), x1) 202.13/69.74 U61(x0, mark(x1)) 202.13/69.74 U61(active(x0), x1) 202.13/69.74 U61(x0, active(x1)) 202.13/69.74 U62(mark(x0)) 202.13/69.74 U62(active(x0)) 202.13/69.74 U71(mark(x0), x1, x2) 202.13/69.74 U71(x0, mark(x1), x2) 202.13/69.74 U71(x0, x1, mark(x2)) 202.13/69.74 U71(active(x0), x1, x2) 202.13/69.74 U71(x0, active(x1), x2) 202.13/69.74 U71(x0, x1, active(x2)) 202.13/69.74 U72(mark(x0), x1) 202.13/69.74 U72(x0, mark(x1)) 202.13/69.74 U72(active(x0), x1) 202.13/69.74 U72(x0, active(x1)) 202.13/69.74 isNat(mark(x0)) 202.13/69.74 isNat(active(x0)) 202.13/69.74 s(mark(x0)) 202.13/69.74 s(active(x0)) 202.13/69.74 length(mark(x0)) 202.13/69.74 length(active(x0)) 202.13/69.74 U81(mark(x0)) 202.13/69.74 U81(active(x0)) 202.13/69.74 U91(mark(x0), x1, x2, x3) 202.13/69.74 U91(x0, mark(x1), x2, x3) 202.13/69.74 U91(x0, x1, mark(x2), x3) 202.13/69.74 U91(x0, x1, x2, mark(x3)) 202.13/69.74 U91(active(x0), x1, x2, x3) 202.13/69.74 U91(x0, active(x1), x2, x3) 202.13/69.74 U91(x0, x1, active(x2), x3) 202.13/69.74 U91(x0, x1, x2, active(x3)) 202.13/69.74 U92(mark(x0), x1, x2, x3) 202.13/69.74 U92(x0, mark(x1), x2, x3) 202.13/69.74 U92(x0, x1, mark(x2), x3) 202.13/69.74 U92(x0, x1, x2, mark(x3)) 202.13/69.74 U92(active(x0), x1, x2, x3) 202.13/69.74 U92(x0, active(x1), x2, x3) 202.13/69.74 U92(x0, x1, active(x2), x3) 202.13/69.74 U92(x0, x1, x2, active(x3)) 202.13/69.74 U93(mark(x0), x1, x2, x3) 202.13/69.74 U93(x0, mark(x1), x2, x3) 202.13/69.74 U93(x0, x1, mark(x2), x3) 202.13/69.74 U93(x0, x1, x2, mark(x3)) 202.13/69.74 U93(active(x0), x1, x2, x3) 202.13/69.74 U93(x0, active(x1), x2, x3) 202.13/69.74 U93(x0, x1, active(x2), x3) 202.13/69.74 U93(x0, x1, x2, active(x3)) 202.13/69.74 take(mark(x0), x1) 202.13/69.74 take(x0, mark(x1)) 202.13/69.74 take(active(x0), x1) 202.13/69.74 take(x0, active(x1)) 202.13/69.74 202.13/69.74 We have to consider all minimal (P,Q,R)-chains. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (90) UsableRulesProof (EQUIVALENT) 202.13/69.74 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (91) 202.13/69.74 Obligation: 202.13/69.74 Q DP problem: 202.13/69.74 The TRS P consists of the following rules: 202.13/69.74 202.13/69.74 ISNATLIST(active(X)) -> ISNATLIST(X) 202.13/69.74 ISNATLIST(mark(X)) -> ISNATLIST(X) 202.13/69.74 202.13/69.74 R is empty. 202.13/69.74 The set Q consists of the following terms: 202.13/69.74 202.13/69.74 active(zeros) 202.13/69.74 active(U11(tt)) 202.13/69.74 active(U21(tt)) 202.13/69.74 active(U31(tt)) 202.13/69.74 active(U41(tt, x0)) 202.13/69.74 active(U42(tt)) 202.13/69.74 active(U51(tt, x0)) 202.13/69.74 active(U52(tt)) 202.13/69.74 active(U61(tt, x0)) 202.13/69.74 active(U62(tt)) 202.13/69.74 active(U71(tt, x0, x1)) 202.13/69.74 active(U72(tt, x0)) 202.13/69.74 active(U81(tt)) 202.13/69.74 active(U91(tt, x0, x1, x2)) 202.13/69.74 active(U92(tt, x0, x1, x2)) 202.13/69.74 active(U93(tt, x0, x1, x2)) 202.13/69.74 active(isNat(0)) 202.13/69.74 active(isNat(length(x0))) 202.13/69.74 active(isNat(s(x0))) 202.13/69.74 active(isNatIList(x0)) 202.13/69.74 active(isNatList(nil)) 202.13/69.74 active(isNatList(cons(x0, x1))) 202.13/69.74 active(isNatList(take(x0, x1))) 202.13/69.74 active(length(nil)) 202.13/69.74 active(length(cons(x0, x1))) 202.13/69.74 active(take(0, x0)) 202.13/69.74 active(take(s(x0), cons(x1, x2))) 202.13/69.74 mark(zeros) 202.13/69.74 mark(cons(x0, x1)) 202.13/69.74 mark(0) 202.13/69.74 mark(U11(x0)) 202.13/69.74 mark(tt) 202.13/69.74 mark(U21(x0)) 202.13/69.74 mark(U31(x0)) 202.13/69.74 mark(U41(x0, x1)) 202.13/69.74 mark(U42(x0)) 202.13/69.74 mark(isNatIList(x0)) 202.13/69.74 mark(U51(x0, x1)) 202.13/69.74 mark(U52(x0)) 202.13/69.74 mark(isNatList(x0)) 202.13/69.74 mark(U61(x0, x1)) 202.13/69.74 mark(U62(x0)) 202.13/69.74 mark(U71(x0, x1, x2)) 202.13/69.74 mark(U72(x0, x1)) 202.13/69.74 mark(isNat(x0)) 202.13/69.74 mark(s(x0)) 202.13/69.74 mark(length(x0)) 202.13/69.74 mark(U81(x0)) 202.13/69.74 mark(nil) 202.13/69.74 mark(U91(x0, x1, x2, x3)) 202.13/69.74 mark(U92(x0, x1, x2, x3)) 202.13/69.74 mark(U93(x0, x1, x2, x3)) 202.13/69.74 mark(take(x0, x1)) 202.13/69.74 cons(mark(x0), x1) 202.13/69.74 cons(x0, mark(x1)) 202.13/69.74 cons(active(x0), x1) 202.13/69.74 cons(x0, active(x1)) 202.13/69.74 U11(mark(x0)) 202.13/69.74 U11(active(x0)) 202.13/69.74 U21(mark(x0)) 202.13/69.74 U21(active(x0)) 202.13/69.74 U31(mark(x0)) 202.13/69.74 U31(active(x0)) 202.13/69.74 U41(mark(x0), x1) 202.13/69.74 U41(x0, mark(x1)) 202.13/69.74 U41(active(x0), x1) 202.13/69.74 U41(x0, active(x1)) 202.13/69.74 U42(mark(x0)) 202.13/69.74 U42(active(x0)) 202.13/69.74 isNatIList(mark(x0)) 202.13/69.74 isNatIList(active(x0)) 202.13/69.74 U51(mark(x0), x1) 202.13/69.74 U51(x0, mark(x1)) 202.13/69.74 U51(active(x0), x1) 202.13/69.74 U51(x0, active(x1)) 202.13/69.74 U52(mark(x0)) 202.13/69.74 U52(active(x0)) 202.13/69.74 isNatList(mark(x0)) 202.13/69.74 isNatList(active(x0)) 202.13/69.74 U61(mark(x0), x1) 202.13/69.74 U61(x0, mark(x1)) 202.13/69.74 U61(active(x0), x1) 202.13/69.74 U61(x0, active(x1)) 202.13/69.74 U62(mark(x0)) 202.13/69.74 U62(active(x0)) 202.13/69.74 U71(mark(x0), x1, x2) 202.13/69.74 U71(x0, mark(x1), x2) 202.13/69.74 U71(x0, x1, mark(x2)) 202.13/69.74 U71(active(x0), x1, x2) 202.13/69.74 U71(x0, active(x1), x2) 202.13/69.74 U71(x0, x1, active(x2)) 202.13/69.74 U72(mark(x0), x1) 202.13/69.74 U72(x0, mark(x1)) 202.13/69.74 U72(active(x0), x1) 202.13/69.74 U72(x0, active(x1)) 202.13/69.74 isNat(mark(x0)) 202.13/69.74 isNat(active(x0)) 202.13/69.74 s(mark(x0)) 202.13/69.74 s(active(x0)) 202.13/69.74 length(mark(x0)) 202.13/69.74 length(active(x0)) 202.13/69.74 U81(mark(x0)) 202.13/69.74 U81(active(x0)) 202.13/69.74 U91(mark(x0), x1, x2, x3) 202.13/69.74 U91(x0, mark(x1), x2, x3) 202.13/69.74 U91(x0, x1, mark(x2), x3) 202.13/69.74 U91(x0, x1, x2, mark(x3)) 202.13/69.74 U91(active(x0), x1, x2, x3) 202.13/69.74 U91(x0, active(x1), x2, x3) 202.13/69.74 U91(x0, x1, active(x2), x3) 202.13/69.74 U91(x0, x1, x2, active(x3)) 202.13/69.74 U92(mark(x0), x1, x2, x3) 202.13/69.74 U92(x0, mark(x1), x2, x3) 202.13/69.74 U92(x0, x1, mark(x2), x3) 202.13/69.74 U92(x0, x1, x2, mark(x3)) 202.13/69.74 U92(active(x0), x1, x2, x3) 202.13/69.74 U92(x0, active(x1), x2, x3) 202.13/69.74 U92(x0, x1, active(x2), x3) 202.13/69.74 U92(x0, x1, x2, active(x3)) 202.13/69.74 U93(mark(x0), x1, x2, x3) 202.13/69.74 U93(x0, mark(x1), x2, x3) 202.13/69.74 U93(x0, x1, mark(x2), x3) 202.13/69.74 U93(x0, x1, x2, mark(x3)) 202.13/69.74 U93(active(x0), x1, x2, x3) 202.13/69.74 U93(x0, active(x1), x2, x3) 202.13/69.74 U93(x0, x1, active(x2), x3) 202.13/69.74 U93(x0, x1, x2, active(x3)) 202.13/69.74 take(mark(x0), x1) 202.13/69.74 take(x0, mark(x1)) 202.13/69.74 take(active(x0), x1) 202.13/69.74 take(x0, active(x1)) 202.13/69.74 202.13/69.74 We have to consider all minimal (P,Q,R)-chains. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (92) QReductionProof (EQUIVALENT) 202.13/69.74 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.13/69.74 202.13/69.74 cons(mark(x0), x1) 202.13/69.74 cons(x0, mark(x1)) 202.13/69.74 cons(active(x0), x1) 202.13/69.74 cons(x0, active(x1)) 202.13/69.74 U11(mark(x0)) 202.13/69.74 U11(active(x0)) 202.13/69.74 U21(mark(x0)) 202.13/69.74 U21(active(x0)) 202.13/69.74 U31(mark(x0)) 202.13/69.74 U31(active(x0)) 202.13/69.74 U41(mark(x0), x1) 202.13/69.74 U41(x0, mark(x1)) 202.13/69.74 U41(active(x0), x1) 202.13/69.74 U41(x0, active(x1)) 202.13/69.74 U42(mark(x0)) 202.13/69.74 U42(active(x0)) 202.13/69.74 isNatIList(mark(x0)) 202.13/69.74 isNatIList(active(x0)) 202.13/69.74 U51(mark(x0), x1) 202.13/69.74 U51(x0, mark(x1)) 202.13/69.74 U51(active(x0), x1) 202.13/69.74 U51(x0, active(x1)) 202.13/69.74 U52(mark(x0)) 202.13/69.74 U52(active(x0)) 202.13/69.74 isNatList(mark(x0)) 202.13/69.74 isNatList(active(x0)) 202.13/69.74 U61(mark(x0), x1) 202.13/69.74 U61(x0, mark(x1)) 202.13/69.74 U61(active(x0), x1) 202.13/69.74 U61(x0, active(x1)) 202.13/69.74 U62(mark(x0)) 202.13/69.74 U62(active(x0)) 202.13/69.74 U71(mark(x0), x1, x2) 202.13/69.74 U71(x0, mark(x1), x2) 202.13/69.74 U71(x0, x1, mark(x2)) 202.13/69.74 U71(active(x0), x1, x2) 202.13/69.74 U71(x0, active(x1), x2) 202.13/69.74 U71(x0, x1, active(x2)) 202.13/69.74 U72(mark(x0), x1) 202.13/69.74 U72(x0, mark(x1)) 202.13/69.74 U72(active(x0), x1) 202.13/69.74 U72(x0, active(x1)) 202.13/69.74 isNat(mark(x0)) 202.13/69.74 isNat(active(x0)) 202.13/69.74 s(mark(x0)) 202.13/69.74 s(active(x0)) 202.13/69.74 length(mark(x0)) 202.13/69.74 length(active(x0)) 202.13/69.74 U81(mark(x0)) 202.13/69.74 U81(active(x0)) 202.13/69.74 U91(mark(x0), x1, x2, x3) 202.13/69.74 U91(x0, mark(x1), x2, x3) 202.13/69.74 U91(x0, x1, mark(x2), x3) 202.13/69.74 U91(x0, x1, x2, mark(x3)) 202.13/69.74 U91(active(x0), x1, x2, x3) 202.13/69.74 U91(x0, active(x1), x2, x3) 202.13/69.74 U91(x0, x1, active(x2), x3) 202.13/69.74 U91(x0, x1, x2, active(x3)) 202.13/69.74 U92(mark(x0), x1, x2, x3) 202.13/69.74 U92(x0, mark(x1), x2, x3) 202.13/69.74 U92(x0, x1, mark(x2), x3) 202.13/69.74 U92(x0, x1, x2, mark(x3)) 202.13/69.74 U92(active(x0), x1, x2, x3) 202.13/69.74 U92(x0, active(x1), x2, x3) 202.13/69.74 U92(x0, x1, active(x2), x3) 202.13/69.74 U92(x0, x1, x2, active(x3)) 202.13/69.74 U93(mark(x0), x1, x2, x3) 202.13/69.74 U93(x0, mark(x1), x2, x3) 202.13/69.74 U93(x0, x1, mark(x2), x3) 202.13/69.74 U93(x0, x1, x2, mark(x3)) 202.13/69.74 U93(active(x0), x1, x2, x3) 202.13/69.74 U93(x0, active(x1), x2, x3) 202.13/69.74 U93(x0, x1, active(x2), x3) 202.13/69.74 U93(x0, x1, x2, active(x3)) 202.13/69.74 take(mark(x0), x1) 202.13/69.74 take(x0, mark(x1)) 202.13/69.74 take(active(x0), x1) 202.13/69.74 take(x0, active(x1)) 202.13/69.74 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (93) 202.13/69.74 Obligation: 202.13/69.74 Q DP problem: 202.13/69.74 The TRS P consists of the following rules: 202.13/69.74 202.13/69.74 ISNATLIST(active(X)) -> ISNATLIST(X) 202.13/69.74 ISNATLIST(mark(X)) -> ISNATLIST(X) 202.13/69.74 202.13/69.74 R is empty. 202.13/69.74 The set Q consists of the following terms: 202.13/69.74 202.13/69.74 active(zeros) 202.13/69.74 active(U11(tt)) 202.13/69.74 active(U21(tt)) 202.13/69.74 active(U31(tt)) 202.13/69.74 active(U41(tt, x0)) 202.13/69.74 active(U42(tt)) 202.13/69.74 active(U51(tt, x0)) 202.13/69.74 active(U52(tt)) 202.13/69.74 active(U61(tt, x0)) 202.13/69.74 active(U62(tt)) 202.13/69.74 active(U71(tt, x0, x1)) 202.13/69.74 active(U72(tt, x0)) 202.13/69.74 active(U81(tt)) 202.13/69.74 active(U91(tt, x0, x1, x2)) 202.13/69.74 active(U92(tt, x0, x1, x2)) 202.13/69.74 active(U93(tt, x0, x1, x2)) 202.13/69.74 active(isNat(0)) 202.13/69.74 active(isNat(length(x0))) 202.13/69.74 active(isNat(s(x0))) 202.13/69.74 active(isNatIList(x0)) 202.13/69.74 active(isNatList(nil)) 202.13/69.74 active(isNatList(cons(x0, x1))) 202.13/69.74 active(isNatList(take(x0, x1))) 202.13/69.74 active(length(nil)) 202.13/69.74 active(length(cons(x0, x1))) 202.13/69.74 active(take(0, x0)) 202.13/69.74 active(take(s(x0), cons(x1, x2))) 202.13/69.74 mark(zeros) 202.13/69.74 mark(cons(x0, x1)) 202.13/69.74 mark(0) 202.13/69.74 mark(U11(x0)) 202.13/69.74 mark(tt) 202.13/69.74 mark(U21(x0)) 202.13/69.74 mark(U31(x0)) 202.13/69.74 mark(U41(x0, x1)) 202.13/69.74 mark(U42(x0)) 202.13/69.74 mark(isNatIList(x0)) 202.13/69.74 mark(U51(x0, x1)) 202.13/69.74 mark(U52(x0)) 202.13/69.74 mark(isNatList(x0)) 202.13/69.74 mark(U61(x0, x1)) 202.13/69.74 mark(U62(x0)) 202.13/69.74 mark(U71(x0, x1, x2)) 202.13/69.74 mark(U72(x0, x1)) 202.13/69.74 mark(isNat(x0)) 202.13/69.74 mark(s(x0)) 202.13/69.74 mark(length(x0)) 202.13/69.74 mark(U81(x0)) 202.13/69.74 mark(nil) 202.13/69.74 mark(U91(x0, x1, x2, x3)) 202.13/69.74 mark(U92(x0, x1, x2, x3)) 202.13/69.74 mark(U93(x0, x1, x2, x3)) 202.13/69.74 mark(take(x0, x1)) 202.13/69.74 202.13/69.74 We have to consider all minimal (P,Q,R)-chains. 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (94) QDPSizeChangeProof (EQUIVALENT) 202.13/69.74 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.13/69.74 202.13/69.74 From the DPs we obtained the following set of size-change graphs: 202.13/69.74 *ISNATLIST(active(X)) -> ISNATLIST(X) 202.13/69.74 The graph contains the following edges 1 > 1 202.13/69.74 202.13/69.74 202.13/69.74 *ISNATLIST(mark(X)) -> ISNATLIST(X) 202.13/69.74 The graph contains the following edges 1 > 1 202.13/69.74 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (95) 202.13/69.74 YES 202.13/69.74 202.13/69.74 ---------------------------------------- 202.13/69.74 202.13/69.74 (96) 202.13/69.74 Obligation: 202.13/69.74 Q DP problem: 202.13/69.74 The TRS P consists of the following rules: 202.13/69.74 202.13/69.74 U52^1(active(X)) -> U52^1(X) 202.13/69.74 U52^1(mark(X)) -> U52^1(X) 202.13/69.74 202.13/69.74 The TRS R consists of the following rules: 202.13/69.74 202.13/69.74 active(zeros) -> mark(cons(0, zeros)) 202.13/69.74 active(U11(tt)) -> mark(tt) 202.13/69.74 active(U21(tt)) -> mark(tt) 202.13/69.74 active(U31(tt)) -> mark(tt) 202.13/69.74 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.13/69.74 active(U42(tt)) -> mark(tt) 202.13/69.74 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.13/69.74 active(U52(tt)) -> mark(tt) 202.13/69.74 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.13/69.74 active(U62(tt)) -> mark(tt) 202.13/69.74 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.13/69.74 active(U72(tt, L)) -> mark(s(length(L))) 202.13/69.74 active(U81(tt)) -> mark(nil) 202.13/69.74 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.13/69.74 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.13/69.74 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.13/69.74 active(isNat(0)) -> mark(tt) 202.13/69.74 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.13/69.74 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.13/69.74 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.13/69.74 active(isNatIList(zeros)) -> mark(tt) 202.13/69.74 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.74 active(isNatList(nil)) -> mark(tt) 202.20/69.74 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.74 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.74 active(length(nil)) -> mark(0) 202.20/69.74 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.74 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.74 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.74 mark(zeros) -> active(zeros) 202.20/69.74 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.74 mark(0) -> active(0) 202.20/69.74 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.74 mark(tt) -> active(tt) 202.20/69.74 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.74 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.74 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.74 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.74 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.74 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.74 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.74 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.74 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.74 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.74 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.74 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.74 mark(isNat(X)) -> active(isNat(X)) 202.20/69.74 mark(s(X)) -> active(s(mark(X))) 202.20/69.74 mark(length(X)) -> active(length(mark(X))) 202.20/69.74 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.74 mark(nil) -> active(nil) 202.20/69.74 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.74 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.74 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.74 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.74 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.74 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.74 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.74 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.74 U11(mark(X)) -> U11(X) 202.20/69.74 U11(active(X)) -> U11(X) 202.20/69.74 U21(mark(X)) -> U21(X) 202.20/69.74 U21(active(X)) -> U21(X) 202.20/69.74 U31(mark(X)) -> U31(X) 202.20/69.74 U31(active(X)) -> U31(X) 202.20/69.74 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.74 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.74 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.74 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.74 U42(mark(X)) -> U42(X) 202.20/69.74 U42(active(X)) -> U42(X) 202.20/69.74 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.74 isNatIList(active(X)) -> isNatIList(X) 202.20/69.74 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.74 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.74 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.74 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.74 U52(mark(X)) -> U52(X) 202.20/69.74 U52(active(X)) -> U52(X) 202.20/69.74 isNatList(mark(X)) -> isNatList(X) 202.20/69.74 isNatList(active(X)) -> isNatList(X) 202.20/69.74 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.74 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.74 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.74 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.74 U62(mark(X)) -> U62(X) 202.20/69.74 U62(active(X)) -> U62(X) 202.20/69.74 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.74 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.74 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.74 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.74 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.74 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.74 isNat(mark(X)) -> isNat(X) 202.20/69.74 isNat(active(X)) -> isNat(X) 202.20/69.74 s(mark(X)) -> s(X) 202.20/69.74 s(active(X)) -> s(X) 202.20/69.74 length(mark(X)) -> length(X) 202.20/69.74 length(active(X)) -> length(X) 202.20/69.74 U81(mark(X)) -> U81(X) 202.20/69.74 U81(active(X)) -> U81(X) 202.20/69.74 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.74 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.74 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.74 take(mark(X1), X2) -> take(X1, X2) 202.20/69.74 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.74 take(active(X1), X2) -> take(X1, X2) 202.20/69.74 take(X1, active(X2)) -> take(X1, X2) 202.20/69.74 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (97) UsableRulesProof (EQUIVALENT) 202.20/69.74 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (98) 202.20/69.74 Obligation: 202.20/69.74 Q DP problem: 202.20/69.74 The TRS P consists of the following rules: 202.20/69.74 202.20/69.74 U52^1(active(X)) -> U52^1(X) 202.20/69.74 U52^1(mark(X)) -> U52^1(X) 202.20/69.74 202.20/69.74 R is empty. 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (99) QReductionProof (EQUIVALENT) 202.20/69.74 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.74 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (100) 202.20/69.74 Obligation: 202.20/69.74 Q DP problem: 202.20/69.74 The TRS P consists of the following rules: 202.20/69.74 202.20/69.74 U52^1(active(X)) -> U52^1(X) 202.20/69.74 U52^1(mark(X)) -> U52^1(X) 202.20/69.74 202.20/69.74 R is empty. 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (101) QDPSizeChangeProof (EQUIVALENT) 202.20/69.74 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.74 202.20/69.74 From the DPs we obtained the following set of size-change graphs: 202.20/69.74 *U52^1(active(X)) -> U52^1(X) 202.20/69.74 The graph contains the following edges 1 > 1 202.20/69.74 202.20/69.74 202.20/69.74 *U52^1(mark(X)) -> U52^1(X) 202.20/69.74 The graph contains the following edges 1 > 1 202.20/69.74 202.20/69.74 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (102) 202.20/69.74 YES 202.20/69.74 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (103) 202.20/69.74 Obligation: 202.20/69.74 Q DP problem: 202.20/69.74 The TRS P consists of the following rules: 202.20/69.74 202.20/69.74 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 202.20/69.74 U51^1(mark(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(active(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(X1, active(X2)) -> U51^1(X1, X2) 202.20/69.74 202.20/69.74 The TRS R consists of the following rules: 202.20/69.74 202.20/69.74 active(zeros) -> mark(cons(0, zeros)) 202.20/69.74 active(U11(tt)) -> mark(tt) 202.20/69.74 active(U21(tt)) -> mark(tt) 202.20/69.74 active(U31(tt)) -> mark(tt) 202.20/69.74 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.74 active(U42(tt)) -> mark(tt) 202.20/69.74 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.74 active(U52(tt)) -> mark(tt) 202.20/69.74 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.74 active(U62(tt)) -> mark(tt) 202.20/69.74 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.74 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.74 active(U81(tt)) -> mark(nil) 202.20/69.74 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.74 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.74 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.74 active(isNat(0)) -> mark(tt) 202.20/69.74 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.74 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.74 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.74 active(isNatIList(zeros)) -> mark(tt) 202.20/69.74 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.74 active(isNatList(nil)) -> mark(tt) 202.20/69.74 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.74 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.74 active(length(nil)) -> mark(0) 202.20/69.74 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.74 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.74 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.74 mark(zeros) -> active(zeros) 202.20/69.74 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.74 mark(0) -> active(0) 202.20/69.74 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.74 mark(tt) -> active(tt) 202.20/69.74 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.74 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.74 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.74 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.74 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.74 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.74 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.74 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.74 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.74 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.74 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.74 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.74 mark(isNat(X)) -> active(isNat(X)) 202.20/69.74 mark(s(X)) -> active(s(mark(X))) 202.20/69.74 mark(length(X)) -> active(length(mark(X))) 202.20/69.74 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.74 mark(nil) -> active(nil) 202.20/69.74 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.74 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.74 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.74 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.74 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.74 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.74 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.74 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.74 U11(mark(X)) -> U11(X) 202.20/69.74 U11(active(X)) -> U11(X) 202.20/69.74 U21(mark(X)) -> U21(X) 202.20/69.74 U21(active(X)) -> U21(X) 202.20/69.74 U31(mark(X)) -> U31(X) 202.20/69.74 U31(active(X)) -> U31(X) 202.20/69.74 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.74 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.74 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.74 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.74 U42(mark(X)) -> U42(X) 202.20/69.74 U42(active(X)) -> U42(X) 202.20/69.74 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.74 isNatIList(active(X)) -> isNatIList(X) 202.20/69.74 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.74 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.74 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.74 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.74 U52(mark(X)) -> U52(X) 202.20/69.74 U52(active(X)) -> U52(X) 202.20/69.74 isNatList(mark(X)) -> isNatList(X) 202.20/69.74 isNatList(active(X)) -> isNatList(X) 202.20/69.74 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.74 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.74 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.74 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.74 U62(mark(X)) -> U62(X) 202.20/69.74 U62(active(X)) -> U62(X) 202.20/69.74 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.74 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.74 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.74 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.74 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.74 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.74 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.74 isNat(mark(X)) -> isNat(X) 202.20/69.74 isNat(active(X)) -> isNat(X) 202.20/69.74 s(mark(X)) -> s(X) 202.20/69.74 s(active(X)) -> s(X) 202.20/69.74 length(mark(X)) -> length(X) 202.20/69.74 length(active(X)) -> length(X) 202.20/69.74 U81(mark(X)) -> U81(X) 202.20/69.74 U81(active(X)) -> U81(X) 202.20/69.74 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.74 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.74 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.74 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.74 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.74 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.74 take(mark(X1), X2) -> take(X1, X2) 202.20/69.74 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.74 take(active(X1), X2) -> take(X1, X2) 202.20/69.74 take(X1, active(X2)) -> take(X1, X2) 202.20/69.74 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (104) UsableRulesProof (EQUIVALENT) 202.20/69.74 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (105) 202.20/69.74 Obligation: 202.20/69.74 Q DP problem: 202.20/69.74 The TRS P consists of the following rules: 202.20/69.74 202.20/69.74 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 202.20/69.74 U51^1(mark(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(active(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(X1, active(X2)) -> U51^1(X1, X2) 202.20/69.74 202.20/69.74 R is empty. 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (106) QReductionProof (EQUIVALENT) 202.20/69.74 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.74 202.20/69.74 cons(mark(x0), x1) 202.20/69.74 cons(x0, mark(x1)) 202.20/69.74 cons(active(x0), x1) 202.20/69.74 cons(x0, active(x1)) 202.20/69.74 U11(mark(x0)) 202.20/69.74 U11(active(x0)) 202.20/69.74 U21(mark(x0)) 202.20/69.74 U21(active(x0)) 202.20/69.74 U31(mark(x0)) 202.20/69.74 U31(active(x0)) 202.20/69.74 U41(mark(x0), x1) 202.20/69.74 U41(x0, mark(x1)) 202.20/69.74 U41(active(x0), x1) 202.20/69.74 U41(x0, active(x1)) 202.20/69.74 U42(mark(x0)) 202.20/69.74 U42(active(x0)) 202.20/69.74 isNatIList(mark(x0)) 202.20/69.74 isNatIList(active(x0)) 202.20/69.74 U51(mark(x0), x1) 202.20/69.74 U51(x0, mark(x1)) 202.20/69.74 U51(active(x0), x1) 202.20/69.74 U51(x0, active(x1)) 202.20/69.74 U52(mark(x0)) 202.20/69.74 U52(active(x0)) 202.20/69.74 isNatList(mark(x0)) 202.20/69.74 isNatList(active(x0)) 202.20/69.74 U61(mark(x0), x1) 202.20/69.74 U61(x0, mark(x1)) 202.20/69.74 U61(active(x0), x1) 202.20/69.74 U61(x0, active(x1)) 202.20/69.74 U62(mark(x0)) 202.20/69.74 U62(active(x0)) 202.20/69.74 U71(mark(x0), x1, x2) 202.20/69.74 U71(x0, mark(x1), x2) 202.20/69.74 U71(x0, x1, mark(x2)) 202.20/69.74 U71(active(x0), x1, x2) 202.20/69.74 U71(x0, active(x1), x2) 202.20/69.74 U71(x0, x1, active(x2)) 202.20/69.74 U72(mark(x0), x1) 202.20/69.74 U72(x0, mark(x1)) 202.20/69.74 U72(active(x0), x1) 202.20/69.74 U72(x0, active(x1)) 202.20/69.74 isNat(mark(x0)) 202.20/69.74 isNat(active(x0)) 202.20/69.74 s(mark(x0)) 202.20/69.74 s(active(x0)) 202.20/69.74 length(mark(x0)) 202.20/69.74 length(active(x0)) 202.20/69.74 U81(mark(x0)) 202.20/69.74 U81(active(x0)) 202.20/69.74 U91(mark(x0), x1, x2, x3) 202.20/69.74 U91(x0, mark(x1), x2, x3) 202.20/69.74 U91(x0, x1, mark(x2), x3) 202.20/69.74 U91(x0, x1, x2, mark(x3)) 202.20/69.74 U91(active(x0), x1, x2, x3) 202.20/69.74 U91(x0, active(x1), x2, x3) 202.20/69.74 U91(x0, x1, active(x2), x3) 202.20/69.74 U91(x0, x1, x2, active(x3)) 202.20/69.74 U92(mark(x0), x1, x2, x3) 202.20/69.74 U92(x0, mark(x1), x2, x3) 202.20/69.74 U92(x0, x1, mark(x2), x3) 202.20/69.74 U92(x0, x1, x2, mark(x3)) 202.20/69.74 U92(active(x0), x1, x2, x3) 202.20/69.74 U92(x0, active(x1), x2, x3) 202.20/69.74 U92(x0, x1, active(x2), x3) 202.20/69.74 U92(x0, x1, x2, active(x3)) 202.20/69.74 U93(mark(x0), x1, x2, x3) 202.20/69.74 U93(x0, mark(x1), x2, x3) 202.20/69.74 U93(x0, x1, mark(x2), x3) 202.20/69.74 U93(x0, x1, x2, mark(x3)) 202.20/69.74 U93(active(x0), x1, x2, x3) 202.20/69.74 U93(x0, active(x1), x2, x3) 202.20/69.74 U93(x0, x1, active(x2), x3) 202.20/69.74 U93(x0, x1, x2, active(x3)) 202.20/69.74 take(mark(x0), x1) 202.20/69.74 take(x0, mark(x1)) 202.20/69.74 take(active(x0), x1) 202.20/69.74 take(x0, active(x1)) 202.20/69.74 202.20/69.74 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (107) 202.20/69.74 Obligation: 202.20/69.74 Q DP problem: 202.20/69.74 The TRS P consists of the following rules: 202.20/69.74 202.20/69.74 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 202.20/69.74 U51^1(mark(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(active(X1), X2) -> U51^1(X1, X2) 202.20/69.74 U51^1(X1, active(X2)) -> U51^1(X1, X2) 202.20/69.74 202.20/69.74 R is empty. 202.20/69.74 The set Q consists of the following terms: 202.20/69.74 202.20/69.74 active(zeros) 202.20/69.74 active(U11(tt)) 202.20/69.74 active(U21(tt)) 202.20/69.74 active(U31(tt)) 202.20/69.74 active(U41(tt, x0)) 202.20/69.74 active(U42(tt)) 202.20/69.74 active(U51(tt, x0)) 202.20/69.74 active(U52(tt)) 202.20/69.74 active(U61(tt, x0)) 202.20/69.74 active(U62(tt)) 202.20/69.74 active(U71(tt, x0, x1)) 202.20/69.74 active(U72(tt, x0)) 202.20/69.74 active(U81(tt)) 202.20/69.74 active(U91(tt, x0, x1, x2)) 202.20/69.74 active(U92(tt, x0, x1, x2)) 202.20/69.74 active(U93(tt, x0, x1, x2)) 202.20/69.74 active(isNat(0)) 202.20/69.74 active(isNat(length(x0))) 202.20/69.74 active(isNat(s(x0))) 202.20/69.74 active(isNatIList(x0)) 202.20/69.74 active(isNatList(nil)) 202.20/69.74 active(isNatList(cons(x0, x1))) 202.20/69.74 active(isNatList(take(x0, x1))) 202.20/69.74 active(length(nil)) 202.20/69.74 active(length(cons(x0, x1))) 202.20/69.74 active(take(0, x0)) 202.20/69.74 active(take(s(x0), cons(x1, x2))) 202.20/69.74 mark(zeros) 202.20/69.74 mark(cons(x0, x1)) 202.20/69.74 mark(0) 202.20/69.74 mark(U11(x0)) 202.20/69.74 mark(tt) 202.20/69.74 mark(U21(x0)) 202.20/69.74 mark(U31(x0)) 202.20/69.74 mark(U41(x0, x1)) 202.20/69.74 mark(U42(x0)) 202.20/69.74 mark(isNatIList(x0)) 202.20/69.74 mark(U51(x0, x1)) 202.20/69.74 mark(U52(x0)) 202.20/69.74 mark(isNatList(x0)) 202.20/69.74 mark(U61(x0, x1)) 202.20/69.74 mark(U62(x0)) 202.20/69.74 mark(U71(x0, x1, x2)) 202.20/69.74 mark(U72(x0, x1)) 202.20/69.74 mark(isNat(x0)) 202.20/69.74 mark(s(x0)) 202.20/69.74 mark(length(x0)) 202.20/69.74 mark(U81(x0)) 202.20/69.74 mark(nil) 202.20/69.74 mark(U91(x0, x1, x2, x3)) 202.20/69.74 mark(U92(x0, x1, x2, x3)) 202.20/69.74 mark(U93(x0, x1, x2, x3)) 202.20/69.74 mark(take(x0, x1)) 202.20/69.74 202.20/69.74 We have to consider all minimal (P,Q,R)-chains. 202.20/69.74 ---------------------------------------- 202.20/69.74 202.20/69.74 (108) QDPSizeChangeProof (EQUIVALENT) 202.20/69.74 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.74 202.20/69.74 From the DPs we obtained the following set of size-change graphs: 202.20/69.74 *U51^1(X1, mark(X2)) -> U51^1(X1, X2) 202.20/69.74 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.74 202.20/69.74 202.20/69.74 *U51^1(mark(X1), X2) -> U51^1(X1, X2) 202.20/69.74 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.74 202.20/69.74 202.20/69.74 *U51^1(active(X1), X2) -> U51^1(X1, X2) 202.20/69.74 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.74 202.20/69.74 202.20/69.74 *U51^1(X1, active(X2)) -> U51^1(X1, X2) 202.20/69.74 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.74 202.20/69.74 202.20/69.74 ---------------------------------------- 202.20/69.75 202.20/69.75 (109) 202.20/69.75 YES 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (110) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 ISNATILIST(active(X)) -> ISNATILIST(X) 202.20/69.75 ISNATILIST(mark(X)) -> ISNATILIST(X) 202.20/69.75 202.20/69.75 The TRS R consists of the following rules: 202.20/69.75 202.20/69.75 active(zeros) -> mark(cons(0, zeros)) 202.20/69.75 active(U11(tt)) -> mark(tt) 202.20/69.75 active(U21(tt)) -> mark(tt) 202.20/69.75 active(U31(tt)) -> mark(tt) 202.20/69.75 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.75 active(U42(tt)) -> mark(tt) 202.20/69.75 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.75 active(U52(tt)) -> mark(tt) 202.20/69.75 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.75 active(U62(tt)) -> mark(tt) 202.20/69.75 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.75 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.75 active(U81(tt)) -> mark(nil) 202.20/69.75 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.75 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.75 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.75 active(isNat(0)) -> mark(tt) 202.20/69.75 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.75 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.75 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.75 active(isNatIList(zeros)) -> mark(tt) 202.20/69.75 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.75 active(isNatList(nil)) -> mark(tt) 202.20/69.75 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.75 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.75 active(length(nil)) -> mark(0) 202.20/69.75 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.75 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.75 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.75 mark(zeros) -> active(zeros) 202.20/69.75 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.75 mark(0) -> active(0) 202.20/69.75 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.75 mark(tt) -> active(tt) 202.20/69.75 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.75 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.75 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.75 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.75 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.75 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.75 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.75 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.75 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.75 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.75 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.75 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.75 mark(isNat(X)) -> active(isNat(X)) 202.20/69.75 mark(s(X)) -> active(s(mark(X))) 202.20/69.75 mark(length(X)) -> active(length(mark(X))) 202.20/69.75 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.75 mark(nil) -> active(nil) 202.20/69.75 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.75 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.75 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.75 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.75 U11(mark(X)) -> U11(X) 202.20/69.75 U11(active(X)) -> U11(X) 202.20/69.75 U21(mark(X)) -> U21(X) 202.20/69.75 U21(active(X)) -> U21(X) 202.20/69.75 U31(mark(X)) -> U31(X) 202.20/69.75 U31(active(X)) -> U31(X) 202.20/69.75 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.75 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.75 U42(mark(X)) -> U42(X) 202.20/69.75 U42(active(X)) -> U42(X) 202.20/69.75 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.75 isNatIList(active(X)) -> isNatIList(X) 202.20/69.75 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.75 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.75 U52(mark(X)) -> U52(X) 202.20/69.75 U52(active(X)) -> U52(X) 202.20/69.75 isNatList(mark(X)) -> isNatList(X) 202.20/69.75 isNatList(active(X)) -> isNatList(X) 202.20/69.75 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.75 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.75 U62(mark(X)) -> U62(X) 202.20/69.75 U62(active(X)) -> U62(X) 202.20/69.75 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.75 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.75 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.75 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.75 isNat(mark(X)) -> isNat(X) 202.20/69.75 isNat(active(X)) -> isNat(X) 202.20/69.75 s(mark(X)) -> s(X) 202.20/69.75 s(active(X)) -> s(X) 202.20/69.75 length(mark(X)) -> length(X) 202.20/69.75 length(active(X)) -> length(X) 202.20/69.75 U81(mark(X)) -> U81(X) 202.20/69.75 U81(active(X)) -> U81(X) 202.20/69.75 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 take(mark(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.75 take(active(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, active(X2)) -> take(X1, X2) 202.20/69.75 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (111) UsableRulesProof (EQUIVALENT) 202.20/69.75 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (112) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 ISNATILIST(active(X)) -> ISNATILIST(X) 202.20/69.75 ISNATILIST(mark(X)) -> ISNATILIST(X) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (113) QReductionProof (EQUIVALENT) 202.20/69.75 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.75 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (114) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 ISNATILIST(active(X)) -> ISNATILIST(X) 202.20/69.75 ISNATILIST(mark(X)) -> ISNATILIST(X) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (115) QDPSizeChangeProof (EQUIVALENT) 202.20/69.75 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.75 202.20/69.75 From the DPs we obtained the following set of size-change graphs: 202.20/69.75 *ISNATILIST(active(X)) -> ISNATILIST(X) 202.20/69.75 The graph contains the following edges 1 > 1 202.20/69.75 202.20/69.75 202.20/69.75 *ISNATILIST(mark(X)) -> ISNATILIST(X) 202.20/69.75 The graph contains the following edges 1 > 1 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (116) 202.20/69.75 YES 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (117) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U42^1(active(X)) -> U42^1(X) 202.20/69.75 U42^1(mark(X)) -> U42^1(X) 202.20/69.75 202.20/69.75 The TRS R consists of the following rules: 202.20/69.75 202.20/69.75 active(zeros) -> mark(cons(0, zeros)) 202.20/69.75 active(U11(tt)) -> mark(tt) 202.20/69.75 active(U21(tt)) -> mark(tt) 202.20/69.75 active(U31(tt)) -> mark(tt) 202.20/69.75 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.75 active(U42(tt)) -> mark(tt) 202.20/69.75 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.75 active(U52(tt)) -> mark(tt) 202.20/69.75 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.75 active(U62(tt)) -> mark(tt) 202.20/69.75 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.75 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.75 active(U81(tt)) -> mark(nil) 202.20/69.75 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.75 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.75 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.75 active(isNat(0)) -> mark(tt) 202.20/69.75 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.75 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.75 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.75 active(isNatIList(zeros)) -> mark(tt) 202.20/69.75 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.75 active(isNatList(nil)) -> mark(tt) 202.20/69.75 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.75 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.75 active(length(nil)) -> mark(0) 202.20/69.75 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.75 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.75 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.75 mark(zeros) -> active(zeros) 202.20/69.75 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.75 mark(0) -> active(0) 202.20/69.75 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.75 mark(tt) -> active(tt) 202.20/69.75 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.75 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.75 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.75 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.75 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.75 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.75 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.75 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.75 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.75 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.75 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.75 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.75 mark(isNat(X)) -> active(isNat(X)) 202.20/69.75 mark(s(X)) -> active(s(mark(X))) 202.20/69.75 mark(length(X)) -> active(length(mark(X))) 202.20/69.75 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.75 mark(nil) -> active(nil) 202.20/69.75 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.75 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.75 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.75 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.75 U11(mark(X)) -> U11(X) 202.20/69.75 U11(active(X)) -> U11(X) 202.20/69.75 U21(mark(X)) -> U21(X) 202.20/69.75 U21(active(X)) -> U21(X) 202.20/69.75 U31(mark(X)) -> U31(X) 202.20/69.75 U31(active(X)) -> U31(X) 202.20/69.75 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.75 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.75 U42(mark(X)) -> U42(X) 202.20/69.75 U42(active(X)) -> U42(X) 202.20/69.75 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.75 isNatIList(active(X)) -> isNatIList(X) 202.20/69.75 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.75 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.75 U52(mark(X)) -> U52(X) 202.20/69.75 U52(active(X)) -> U52(X) 202.20/69.75 isNatList(mark(X)) -> isNatList(X) 202.20/69.75 isNatList(active(X)) -> isNatList(X) 202.20/69.75 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.75 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.75 U62(mark(X)) -> U62(X) 202.20/69.75 U62(active(X)) -> U62(X) 202.20/69.75 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.75 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.75 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.75 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.75 isNat(mark(X)) -> isNat(X) 202.20/69.75 isNat(active(X)) -> isNat(X) 202.20/69.75 s(mark(X)) -> s(X) 202.20/69.75 s(active(X)) -> s(X) 202.20/69.75 length(mark(X)) -> length(X) 202.20/69.75 length(active(X)) -> length(X) 202.20/69.75 U81(mark(X)) -> U81(X) 202.20/69.75 U81(active(X)) -> U81(X) 202.20/69.75 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 take(mark(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.75 take(active(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, active(X2)) -> take(X1, X2) 202.20/69.75 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (118) UsableRulesProof (EQUIVALENT) 202.20/69.75 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (119) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U42^1(active(X)) -> U42^1(X) 202.20/69.75 U42^1(mark(X)) -> U42^1(X) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (120) QReductionProof (EQUIVALENT) 202.20/69.75 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.75 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (121) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U42^1(active(X)) -> U42^1(X) 202.20/69.75 U42^1(mark(X)) -> U42^1(X) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (122) QDPSizeChangeProof (EQUIVALENT) 202.20/69.75 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.75 202.20/69.75 From the DPs we obtained the following set of size-change graphs: 202.20/69.75 *U42^1(active(X)) -> U42^1(X) 202.20/69.75 The graph contains the following edges 1 > 1 202.20/69.75 202.20/69.75 202.20/69.75 *U42^1(mark(X)) -> U42^1(X) 202.20/69.75 The graph contains the following edges 1 > 1 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (123) 202.20/69.75 YES 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (124) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 202.20/69.75 U41^1(mark(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(active(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(X1, active(X2)) -> U41^1(X1, X2) 202.20/69.75 202.20/69.75 The TRS R consists of the following rules: 202.20/69.75 202.20/69.75 active(zeros) -> mark(cons(0, zeros)) 202.20/69.75 active(U11(tt)) -> mark(tt) 202.20/69.75 active(U21(tt)) -> mark(tt) 202.20/69.75 active(U31(tt)) -> mark(tt) 202.20/69.75 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.75 active(U42(tt)) -> mark(tt) 202.20/69.75 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.75 active(U52(tt)) -> mark(tt) 202.20/69.75 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.75 active(U62(tt)) -> mark(tt) 202.20/69.75 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.75 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.75 active(U81(tt)) -> mark(nil) 202.20/69.75 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.75 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.75 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.75 active(isNat(0)) -> mark(tt) 202.20/69.75 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.75 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.75 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.75 active(isNatIList(zeros)) -> mark(tt) 202.20/69.75 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.75 active(isNatList(nil)) -> mark(tt) 202.20/69.75 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.75 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.75 active(length(nil)) -> mark(0) 202.20/69.75 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.75 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.75 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.75 mark(zeros) -> active(zeros) 202.20/69.75 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.75 mark(0) -> active(0) 202.20/69.75 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.75 mark(tt) -> active(tt) 202.20/69.75 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.75 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.75 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.75 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.75 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.75 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.75 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.75 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.75 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.75 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.75 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.75 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.75 mark(isNat(X)) -> active(isNat(X)) 202.20/69.75 mark(s(X)) -> active(s(mark(X))) 202.20/69.75 mark(length(X)) -> active(length(mark(X))) 202.20/69.75 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.75 mark(nil) -> active(nil) 202.20/69.75 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.75 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.75 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.75 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.75 U11(mark(X)) -> U11(X) 202.20/69.75 U11(active(X)) -> U11(X) 202.20/69.75 U21(mark(X)) -> U21(X) 202.20/69.75 U21(active(X)) -> U21(X) 202.20/69.75 U31(mark(X)) -> U31(X) 202.20/69.75 U31(active(X)) -> U31(X) 202.20/69.75 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.75 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.75 U42(mark(X)) -> U42(X) 202.20/69.75 U42(active(X)) -> U42(X) 202.20/69.75 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.75 isNatIList(active(X)) -> isNatIList(X) 202.20/69.75 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.75 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.75 U52(mark(X)) -> U52(X) 202.20/69.75 U52(active(X)) -> U52(X) 202.20/69.75 isNatList(mark(X)) -> isNatList(X) 202.20/69.75 isNatList(active(X)) -> isNatList(X) 202.20/69.75 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.75 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.75 U62(mark(X)) -> U62(X) 202.20/69.75 U62(active(X)) -> U62(X) 202.20/69.75 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.75 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.75 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.75 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.75 isNat(mark(X)) -> isNat(X) 202.20/69.75 isNat(active(X)) -> isNat(X) 202.20/69.75 s(mark(X)) -> s(X) 202.20/69.75 s(active(X)) -> s(X) 202.20/69.75 length(mark(X)) -> length(X) 202.20/69.75 length(active(X)) -> length(X) 202.20/69.75 U81(mark(X)) -> U81(X) 202.20/69.75 U81(active(X)) -> U81(X) 202.20/69.75 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.75 take(mark(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.75 take(active(X1), X2) -> take(X1, X2) 202.20/69.75 take(X1, active(X2)) -> take(X1, X2) 202.20/69.75 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (125) UsableRulesProof (EQUIVALENT) 202.20/69.75 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (126) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 202.20/69.75 U41^1(mark(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(active(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(X1, active(X2)) -> U41^1(X1, X2) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (127) QReductionProof (EQUIVALENT) 202.20/69.75 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.75 202.20/69.75 cons(mark(x0), x1) 202.20/69.75 cons(x0, mark(x1)) 202.20/69.75 cons(active(x0), x1) 202.20/69.75 cons(x0, active(x1)) 202.20/69.75 U11(mark(x0)) 202.20/69.75 U11(active(x0)) 202.20/69.75 U21(mark(x0)) 202.20/69.75 U21(active(x0)) 202.20/69.75 U31(mark(x0)) 202.20/69.75 U31(active(x0)) 202.20/69.75 U41(mark(x0), x1) 202.20/69.75 U41(x0, mark(x1)) 202.20/69.75 U41(active(x0), x1) 202.20/69.75 U41(x0, active(x1)) 202.20/69.75 U42(mark(x0)) 202.20/69.75 U42(active(x0)) 202.20/69.75 isNatIList(mark(x0)) 202.20/69.75 isNatIList(active(x0)) 202.20/69.75 U51(mark(x0), x1) 202.20/69.75 U51(x0, mark(x1)) 202.20/69.75 U51(active(x0), x1) 202.20/69.75 U51(x0, active(x1)) 202.20/69.75 U52(mark(x0)) 202.20/69.75 U52(active(x0)) 202.20/69.75 isNatList(mark(x0)) 202.20/69.75 isNatList(active(x0)) 202.20/69.75 U61(mark(x0), x1) 202.20/69.75 U61(x0, mark(x1)) 202.20/69.75 U61(active(x0), x1) 202.20/69.75 U61(x0, active(x1)) 202.20/69.75 U62(mark(x0)) 202.20/69.75 U62(active(x0)) 202.20/69.75 U71(mark(x0), x1, x2) 202.20/69.75 U71(x0, mark(x1), x2) 202.20/69.75 U71(x0, x1, mark(x2)) 202.20/69.75 U71(active(x0), x1, x2) 202.20/69.75 U71(x0, active(x1), x2) 202.20/69.75 U71(x0, x1, active(x2)) 202.20/69.75 U72(mark(x0), x1) 202.20/69.75 U72(x0, mark(x1)) 202.20/69.75 U72(active(x0), x1) 202.20/69.75 U72(x0, active(x1)) 202.20/69.75 isNat(mark(x0)) 202.20/69.75 isNat(active(x0)) 202.20/69.75 s(mark(x0)) 202.20/69.75 s(active(x0)) 202.20/69.75 length(mark(x0)) 202.20/69.75 length(active(x0)) 202.20/69.75 U81(mark(x0)) 202.20/69.75 U81(active(x0)) 202.20/69.75 U91(mark(x0), x1, x2, x3) 202.20/69.75 U91(x0, mark(x1), x2, x3) 202.20/69.75 U91(x0, x1, mark(x2), x3) 202.20/69.75 U91(x0, x1, x2, mark(x3)) 202.20/69.75 U91(active(x0), x1, x2, x3) 202.20/69.75 U91(x0, active(x1), x2, x3) 202.20/69.75 U91(x0, x1, active(x2), x3) 202.20/69.75 U91(x0, x1, x2, active(x3)) 202.20/69.75 U92(mark(x0), x1, x2, x3) 202.20/69.75 U92(x0, mark(x1), x2, x3) 202.20/69.75 U92(x0, x1, mark(x2), x3) 202.20/69.75 U92(x0, x1, x2, mark(x3)) 202.20/69.75 U92(active(x0), x1, x2, x3) 202.20/69.75 U92(x0, active(x1), x2, x3) 202.20/69.75 U92(x0, x1, active(x2), x3) 202.20/69.75 U92(x0, x1, x2, active(x3)) 202.20/69.75 U93(mark(x0), x1, x2, x3) 202.20/69.75 U93(x0, mark(x1), x2, x3) 202.20/69.75 U93(x0, x1, mark(x2), x3) 202.20/69.75 U93(x0, x1, x2, mark(x3)) 202.20/69.75 U93(active(x0), x1, x2, x3) 202.20/69.75 U93(x0, active(x1), x2, x3) 202.20/69.75 U93(x0, x1, active(x2), x3) 202.20/69.75 U93(x0, x1, x2, active(x3)) 202.20/69.75 take(mark(x0), x1) 202.20/69.75 take(x0, mark(x1)) 202.20/69.75 take(active(x0), x1) 202.20/69.75 take(x0, active(x1)) 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (128) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 202.20/69.75 U41^1(mark(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(active(X1), X2) -> U41^1(X1, X2) 202.20/69.75 U41^1(X1, active(X2)) -> U41^1(X1, X2) 202.20/69.75 202.20/69.75 R is empty. 202.20/69.75 The set Q consists of the following terms: 202.20/69.75 202.20/69.75 active(zeros) 202.20/69.75 active(U11(tt)) 202.20/69.75 active(U21(tt)) 202.20/69.75 active(U31(tt)) 202.20/69.75 active(U41(tt, x0)) 202.20/69.75 active(U42(tt)) 202.20/69.75 active(U51(tt, x0)) 202.20/69.75 active(U52(tt)) 202.20/69.75 active(U61(tt, x0)) 202.20/69.75 active(U62(tt)) 202.20/69.75 active(U71(tt, x0, x1)) 202.20/69.75 active(U72(tt, x0)) 202.20/69.75 active(U81(tt)) 202.20/69.75 active(U91(tt, x0, x1, x2)) 202.20/69.75 active(U92(tt, x0, x1, x2)) 202.20/69.75 active(U93(tt, x0, x1, x2)) 202.20/69.75 active(isNat(0)) 202.20/69.75 active(isNat(length(x0))) 202.20/69.75 active(isNat(s(x0))) 202.20/69.75 active(isNatIList(x0)) 202.20/69.75 active(isNatList(nil)) 202.20/69.75 active(isNatList(cons(x0, x1))) 202.20/69.75 active(isNatList(take(x0, x1))) 202.20/69.75 active(length(nil)) 202.20/69.75 active(length(cons(x0, x1))) 202.20/69.75 active(take(0, x0)) 202.20/69.75 active(take(s(x0), cons(x1, x2))) 202.20/69.75 mark(zeros) 202.20/69.75 mark(cons(x0, x1)) 202.20/69.75 mark(0) 202.20/69.75 mark(U11(x0)) 202.20/69.75 mark(tt) 202.20/69.75 mark(U21(x0)) 202.20/69.75 mark(U31(x0)) 202.20/69.75 mark(U41(x0, x1)) 202.20/69.75 mark(U42(x0)) 202.20/69.75 mark(isNatIList(x0)) 202.20/69.75 mark(U51(x0, x1)) 202.20/69.75 mark(U52(x0)) 202.20/69.75 mark(isNatList(x0)) 202.20/69.75 mark(U61(x0, x1)) 202.20/69.75 mark(U62(x0)) 202.20/69.75 mark(U71(x0, x1, x2)) 202.20/69.75 mark(U72(x0, x1)) 202.20/69.75 mark(isNat(x0)) 202.20/69.75 mark(s(x0)) 202.20/69.75 mark(length(x0)) 202.20/69.75 mark(U81(x0)) 202.20/69.75 mark(nil) 202.20/69.75 mark(U91(x0, x1, x2, x3)) 202.20/69.75 mark(U92(x0, x1, x2, x3)) 202.20/69.75 mark(U93(x0, x1, x2, x3)) 202.20/69.75 mark(take(x0, x1)) 202.20/69.75 202.20/69.75 We have to consider all minimal (P,Q,R)-chains. 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (129) QDPSizeChangeProof (EQUIVALENT) 202.20/69.75 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.75 202.20/69.75 From the DPs we obtained the following set of size-change graphs: 202.20/69.75 *U41^1(X1, mark(X2)) -> U41^1(X1, X2) 202.20/69.75 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.75 202.20/69.75 202.20/69.75 *U41^1(mark(X1), X2) -> U41^1(X1, X2) 202.20/69.75 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.75 202.20/69.75 202.20/69.75 *U41^1(active(X1), X2) -> U41^1(X1, X2) 202.20/69.75 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.75 202.20/69.75 202.20/69.75 *U41^1(X1, active(X2)) -> U41^1(X1, X2) 202.20/69.75 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.75 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (130) 202.20/69.75 YES 202.20/69.75 202.20/69.75 ---------------------------------------- 202.20/69.75 202.20/69.75 (131) 202.20/69.75 Obligation: 202.20/69.75 Q DP problem: 202.20/69.75 The TRS P consists of the following rules: 202.20/69.75 202.20/69.75 U31^1(active(X)) -> U31^1(X) 202.20/69.75 U31^1(mark(X)) -> U31^1(X) 202.20/69.75 202.20/69.75 The TRS R consists of the following rules: 202.20/69.75 202.20/69.75 active(zeros) -> mark(cons(0, zeros)) 202.20/69.75 active(U11(tt)) -> mark(tt) 202.20/69.75 active(U21(tt)) -> mark(tt) 202.20/69.75 active(U31(tt)) -> mark(tt) 202.20/69.75 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.75 active(U42(tt)) -> mark(tt) 202.20/69.75 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.75 active(U52(tt)) -> mark(tt) 202.20/69.75 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.75 active(U62(tt)) -> mark(tt) 202.20/69.75 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.75 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.75 active(U81(tt)) -> mark(nil) 202.20/69.75 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.75 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.75 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.75 active(isNat(0)) -> mark(tt) 202.20/69.75 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.75 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.75 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.75 active(isNatIList(zeros)) -> mark(tt) 202.20/69.75 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.75 active(isNatList(nil)) -> mark(tt) 202.20/69.75 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.75 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.75 active(length(nil)) -> mark(0) 202.20/69.75 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.75 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.75 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.75 mark(zeros) -> active(zeros) 202.20/69.75 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.75 mark(0) -> active(0) 202.20/69.75 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.75 mark(tt) -> active(tt) 202.20/69.75 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.75 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.75 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.75 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.75 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.75 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.75 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.75 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.75 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.75 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.75 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.75 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.75 mark(isNat(X)) -> active(isNat(X)) 202.20/69.75 mark(s(X)) -> active(s(mark(X))) 202.20/69.75 mark(length(X)) -> active(length(mark(X))) 202.20/69.75 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.75 mark(nil) -> active(nil) 202.20/69.75 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.75 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.75 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.75 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.75 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.75 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.75 U11(mark(X)) -> U11(X) 202.20/69.75 U11(active(X)) -> U11(X) 202.20/69.75 U21(mark(X)) -> U21(X) 202.20/69.75 U21(active(X)) -> U21(X) 202.20/69.75 U31(mark(X)) -> U31(X) 202.20/69.75 U31(active(X)) -> U31(X) 202.20/69.75 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.75 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.75 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.75 U42(mark(X)) -> U42(X) 202.20/69.75 U42(active(X)) -> U42(X) 202.20/69.75 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.75 isNatIList(active(X)) -> isNatIList(X) 202.20/69.75 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.75 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.75 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.75 U52(mark(X)) -> U52(X) 202.20/69.75 U52(active(X)) -> U52(X) 202.20/69.75 isNatList(mark(X)) -> isNatList(X) 202.20/69.75 isNatList(active(X)) -> isNatList(X) 202.20/69.75 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.75 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.75 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.75 U62(mark(X)) -> U62(X) 202.20/69.75 U62(active(X)) -> U62(X) 202.20/69.75 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.75 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.75 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.75 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.75 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.75 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.75 isNat(mark(X)) -> isNat(X) 202.20/69.75 isNat(active(X)) -> isNat(X) 202.20/69.75 s(mark(X)) -> s(X) 202.20/69.75 s(active(X)) -> s(X) 202.20/69.75 length(mark(X)) -> length(X) 202.20/69.75 length(active(X)) -> length(X) 202.20/69.75 U81(mark(X)) -> U81(X) 202.20/69.75 U81(active(X)) -> U81(X) 202.20/69.75 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.75 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.75 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.75 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.75 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.75 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 take(mark(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.76 take(active(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, active(X2)) -> take(X1, X2) 202.20/69.76 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (132) UsableRulesProof (EQUIVALENT) 202.20/69.76 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (133) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U31^1(active(X)) -> U31^1(X) 202.20/69.76 U31^1(mark(X)) -> U31^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (134) QReductionProof (EQUIVALENT) 202.20/69.76 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.76 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (135) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U31^1(active(X)) -> U31^1(X) 202.20/69.76 U31^1(mark(X)) -> U31^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (136) QDPSizeChangeProof (EQUIVALENT) 202.20/69.76 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.76 202.20/69.76 From the DPs we obtained the following set of size-change graphs: 202.20/69.76 *U31^1(active(X)) -> U31^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 *U31^1(mark(X)) -> U31^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (137) 202.20/69.76 YES 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (138) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U21^1(active(X)) -> U21^1(X) 202.20/69.76 U21^1(mark(X)) -> U21^1(X) 202.20/69.76 202.20/69.76 The TRS R consists of the following rules: 202.20/69.76 202.20/69.76 active(zeros) -> mark(cons(0, zeros)) 202.20/69.76 active(U11(tt)) -> mark(tt) 202.20/69.76 active(U21(tt)) -> mark(tt) 202.20/69.76 active(U31(tt)) -> mark(tt) 202.20/69.76 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.76 active(U42(tt)) -> mark(tt) 202.20/69.76 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.76 active(U52(tt)) -> mark(tt) 202.20/69.76 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.76 active(U62(tt)) -> mark(tt) 202.20/69.76 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.76 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.76 active(U81(tt)) -> mark(nil) 202.20/69.76 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.76 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.76 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.76 active(isNat(0)) -> mark(tt) 202.20/69.76 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.76 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.76 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.76 active(isNatIList(zeros)) -> mark(tt) 202.20/69.76 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.76 active(isNatList(nil)) -> mark(tt) 202.20/69.76 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.76 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.76 active(length(nil)) -> mark(0) 202.20/69.76 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.76 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.76 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.76 mark(zeros) -> active(zeros) 202.20/69.76 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.76 mark(0) -> active(0) 202.20/69.76 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.76 mark(tt) -> active(tt) 202.20/69.76 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.76 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.76 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.76 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.76 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.76 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.76 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.76 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.76 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.76 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.76 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.76 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.76 mark(isNat(X)) -> active(isNat(X)) 202.20/69.76 mark(s(X)) -> active(s(mark(X))) 202.20/69.76 mark(length(X)) -> active(length(mark(X))) 202.20/69.76 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.76 mark(nil) -> active(nil) 202.20/69.76 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.76 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.76 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.76 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.76 U11(mark(X)) -> U11(X) 202.20/69.76 U11(active(X)) -> U11(X) 202.20/69.76 U21(mark(X)) -> U21(X) 202.20/69.76 U21(active(X)) -> U21(X) 202.20/69.76 U31(mark(X)) -> U31(X) 202.20/69.76 U31(active(X)) -> U31(X) 202.20/69.76 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.76 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.76 U42(mark(X)) -> U42(X) 202.20/69.76 U42(active(X)) -> U42(X) 202.20/69.76 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.76 isNatIList(active(X)) -> isNatIList(X) 202.20/69.76 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.76 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.76 U52(mark(X)) -> U52(X) 202.20/69.76 U52(active(X)) -> U52(X) 202.20/69.76 isNatList(mark(X)) -> isNatList(X) 202.20/69.76 isNatList(active(X)) -> isNatList(X) 202.20/69.76 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.76 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.76 U62(mark(X)) -> U62(X) 202.20/69.76 U62(active(X)) -> U62(X) 202.20/69.76 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.76 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.76 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.76 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.76 isNat(mark(X)) -> isNat(X) 202.20/69.76 isNat(active(X)) -> isNat(X) 202.20/69.76 s(mark(X)) -> s(X) 202.20/69.76 s(active(X)) -> s(X) 202.20/69.76 length(mark(X)) -> length(X) 202.20/69.76 length(active(X)) -> length(X) 202.20/69.76 U81(mark(X)) -> U81(X) 202.20/69.76 U81(active(X)) -> U81(X) 202.20/69.76 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 take(mark(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.76 take(active(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, active(X2)) -> take(X1, X2) 202.20/69.76 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (139) UsableRulesProof (EQUIVALENT) 202.20/69.76 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (140) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U21^1(active(X)) -> U21^1(X) 202.20/69.76 U21^1(mark(X)) -> U21^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (141) QReductionProof (EQUIVALENT) 202.20/69.76 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.76 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (142) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U21^1(active(X)) -> U21^1(X) 202.20/69.76 U21^1(mark(X)) -> U21^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (143) QDPSizeChangeProof (EQUIVALENT) 202.20/69.76 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.76 202.20/69.76 From the DPs we obtained the following set of size-change graphs: 202.20/69.76 *U21^1(active(X)) -> U21^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 *U21^1(mark(X)) -> U21^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (144) 202.20/69.76 YES 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (145) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U11^1(active(X)) -> U11^1(X) 202.20/69.76 U11^1(mark(X)) -> U11^1(X) 202.20/69.76 202.20/69.76 The TRS R consists of the following rules: 202.20/69.76 202.20/69.76 active(zeros) -> mark(cons(0, zeros)) 202.20/69.76 active(U11(tt)) -> mark(tt) 202.20/69.76 active(U21(tt)) -> mark(tt) 202.20/69.76 active(U31(tt)) -> mark(tt) 202.20/69.76 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.76 active(U42(tt)) -> mark(tt) 202.20/69.76 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.76 active(U52(tt)) -> mark(tt) 202.20/69.76 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.76 active(U62(tt)) -> mark(tt) 202.20/69.76 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.76 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.76 active(U81(tt)) -> mark(nil) 202.20/69.76 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.76 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.76 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.76 active(isNat(0)) -> mark(tt) 202.20/69.76 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.76 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.76 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.76 active(isNatIList(zeros)) -> mark(tt) 202.20/69.76 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.76 active(isNatList(nil)) -> mark(tt) 202.20/69.76 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.76 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.76 active(length(nil)) -> mark(0) 202.20/69.76 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.76 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.76 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.76 mark(zeros) -> active(zeros) 202.20/69.76 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.76 mark(0) -> active(0) 202.20/69.76 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.76 mark(tt) -> active(tt) 202.20/69.76 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.76 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.76 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.76 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.76 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.76 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.76 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.76 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.76 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.76 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.76 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.76 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.76 mark(isNat(X)) -> active(isNat(X)) 202.20/69.76 mark(s(X)) -> active(s(mark(X))) 202.20/69.76 mark(length(X)) -> active(length(mark(X))) 202.20/69.76 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.76 mark(nil) -> active(nil) 202.20/69.76 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.76 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.76 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.76 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.76 U11(mark(X)) -> U11(X) 202.20/69.76 U11(active(X)) -> U11(X) 202.20/69.76 U21(mark(X)) -> U21(X) 202.20/69.76 U21(active(X)) -> U21(X) 202.20/69.76 U31(mark(X)) -> U31(X) 202.20/69.76 U31(active(X)) -> U31(X) 202.20/69.76 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.76 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.76 U42(mark(X)) -> U42(X) 202.20/69.76 U42(active(X)) -> U42(X) 202.20/69.76 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.76 isNatIList(active(X)) -> isNatIList(X) 202.20/69.76 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.76 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.76 U52(mark(X)) -> U52(X) 202.20/69.76 U52(active(X)) -> U52(X) 202.20/69.76 isNatList(mark(X)) -> isNatList(X) 202.20/69.76 isNatList(active(X)) -> isNatList(X) 202.20/69.76 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.76 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.76 U62(mark(X)) -> U62(X) 202.20/69.76 U62(active(X)) -> U62(X) 202.20/69.76 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.76 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.76 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.76 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.76 isNat(mark(X)) -> isNat(X) 202.20/69.76 isNat(active(X)) -> isNat(X) 202.20/69.76 s(mark(X)) -> s(X) 202.20/69.76 s(active(X)) -> s(X) 202.20/69.76 length(mark(X)) -> length(X) 202.20/69.76 length(active(X)) -> length(X) 202.20/69.76 U81(mark(X)) -> U81(X) 202.20/69.76 U81(active(X)) -> U81(X) 202.20/69.76 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 take(mark(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.76 take(active(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, active(X2)) -> take(X1, X2) 202.20/69.76 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (146) UsableRulesProof (EQUIVALENT) 202.20/69.76 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (147) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U11^1(active(X)) -> U11^1(X) 202.20/69.76 U11^1(mark(X)) -> U11^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (148) QReductionProof (EQUIVALENT) 202.20/69.76 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.76 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (149) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 U11^1(active(X)) -> U11^1(X) 202.20/69.76 U11^1(mark(X)) -> U11^1(X) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (150) QDPSizeChangeProof (EQUIVALENT) 202.20/69.76 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.76 202.20/69.76 From the DPs we obtained the following set of size-change graphs: 202.20/69.76 *U11^1(active(X)) -> U11^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 *U11^1(mark(X)) -> U11^1(X) 202.20/69.76 The graph contains the following edges 1 > 1 202.20/69.76 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (151) 202.20/69.76 YES 202.20/69.76 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (152) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 CONS(X1, mark(X2)) -> CONS(X1, X2) 202.20/69.76 CONS(mark(X1), X2) -> CONS(X1, X2) 202.20/69.76 CONS(active(X1), X2) -> CONS(X1, X2) 202.20/69.76 CONS(X1, active(X2)) -> CONS(X1, X2) 202.20/69.76 202.20/69.76 The TRS R consists of the following rules: 202.20/69.76 202.20/69.76 active(zeros) -> mark(cons(0, zeros)) 202.20/69.76 active(U11(tt)) -> mark(tt) 202.20/69.76 active(U21(tt)) -> mark(tt) 202.20/69.76 active(U31(tt)) -> mark(tt) 202.20/69.76 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.76 active(U42(tt)) -> mark(tt) 202.20/69.76 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.76 active(U52(tt)) -> mark(tt) 202.20/69.76 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.76 active(U62(tt)) -> mark(tt) 202.20/69.76 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.76 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.76 active(U81(tt)) -> mark(nil) 202.20/69.76 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.76 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.76 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.76 active(isNat(0)) -> mark(tt) 202.20/69.76 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.76 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.76 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.76 active(isNatIList(zeros)) -> mark(tt) 202.20/69.76 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.76 active(isNatList(nil)) -> mark(tt) 202.20/69.76 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.76 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.76 active(length(nil)) -> mark(0) 202.20/69.76 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.76 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.76 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.76 mark(zeros) -> active(zeros) 202.20/69.76 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.76 mark(0) -> active(0) 202.20/69.76 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.76 mark(tt) -> active(tt) 202.20/69.76 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.76 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.76 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.76 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.76 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.76 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.76 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.76 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.76 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.76 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.76 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.76 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.76 mark(isNat(X)) -> active(isNat(X)) 202.20/69.76 mark(s(X)) -> active(s(mark(X))) 202.20/69.76 mark(length(X)) -> active(length(mark(X))) 202.20/69.76 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.76 mark(nil) -> active(nil) 202.20/69.76 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.76 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.76 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.76 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.76 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.76 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.76 U11(mark(X)) -> U11(X) 202.20/69.76 U11(active(X)) -> U11(X) 202.20/69.76 U21(mark(X)) -> U21(X) 202.20/69.76 U21(active(X)) -> U21(X) 202.20/69.76 U31(mark(X)) -> U31(X) 202.20/69.76 U31(active(X)) -> U31(X) 202.20/69.76 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.76 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.76 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.76 U42(mark(X)) -> U42(X) 202.20/69.76 U42(active(X)) -> U42(X) 202.20/69.76 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.76 isNatIList(active(X)) -> isNatIList(X) 202.20/69.76 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.76 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.76 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.76 U52(mark(X)) -> U52(X) 202.20/69.76 U52(active(X)) -> U52(X) 202.20/69.76 isNatList(mark(X)) -> isNatList(X) 202.20/69.76 isNatList(active(X)) -> isNatList(X) 202.20/69.76 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.76 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.76 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.76 U62(mark(X)) -> U62(X) 202.20/69.76 U62(active(X)) -> U62(X) 202.20/69.76 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.76 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.76 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.76 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.76 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.76 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.76 isNat(mark(X)) -> isNat(X) 202.20/69.76 isNat(active(X)) -> isNat(X) 202.20/69.76 s(mark(X)) -> s(X) 202.20/69.76 s(active(X)) -> s(X) 202.20/69.76 length(mark(X)) -> length(X) 202.20/69.76 length(active(X)) -> length(X) 202.20/69.76 U81(mark(X)) -> U81(X) 202.20/69.76 U81(active(X)) -> U81(X) 202.20/69.76 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.76 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.76 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.76 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.76 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.76 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.76 take(mark(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.76 take(active(X1), X2) -> take(X1, X2) 202.20/69.76 take(X1, active(X2)) -> take(X1, X2) 202.20/69.76 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.76 U93(active(x0), x1, x2, x3) 202.20/69.76 U93(x0, active(x1), x2, x3) 202.20/69.76 U93(x0, x1, active(x2), x3) 202.20/69.76 U93(x0, x1, x2, active(x3)) 202.20/69.76 take(mark(x0), x1) 202.20/69.76 take(x0, mark(x1)) 202.20/69.76 take(active(x0), x1) 202.20/69.76 take(x0, active(x1)) 202.20/69.76 202.20/69.76 We have to consider all minimal (P,Q,R)-chains. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (153) UsableRulesProof (EQUIVALENT) 202.20/69.76 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.76 ---------------------------------------- 202.20/69.76 202.20/69.76 (154) 202.20/69.76 Obligation: 202.20/69.76 Q DP problem: 202.20/69.76 The TRS P consists of the following rules: 202.20/69.76 202.20/69.76 CONS(X1, mark(X2)) -> CONS(X1, X2) 202.20/69.76 CONS(mark(X1), X2) -> CONS(X1, X2) 202.20/69.76 CONS(active(X1), X2) -> CONS(X1, X2) 202.20/69.76 CONS(X1, active(X2)) -> CONS(X1, X2) 202.20/69.76 202.20/69.76 R is empty. 202.20/69.76 The set Q consists of the following terms: 202.20/69.76 202.20/69.76 active(zeros) 202.20/69.76 active(U11(tt)) 202.20/69.76 active(U21(tt)) 202.20/69.76 active(U31(tt)) 202.20/69.76 active(U41(tt, x0)) 202.20/69.76 active(U42(tt)) 202.20/69.76 active(U51(tt, x0)) 202.20/69.76 active(U52(tt)) 202.20/69.76 active(U61(tt, x0)) 202.20/69.76 active(U62(tt)) 202.20/69.76 active(U71(tt, x0, x1)) 202.20/69.76 active(U72(tt, x0)) 202.20/69.76 active(U81(tt)) 202.20/69.76 active(U91(tt, x0, x1, x2)) 202.20/69.76 active(U92(tt, x0, x1, x2)) 202.20/69.76 active(U93(tt, x0, x1, x2)) 202.20/69.76 active(isNat(0)) 202.20/69.76 active(isNat(length(x0))) 202.20/69.76 active(isNat(s(x0))) 202.20/69.76 active(isNatIList(x0)) 202.20/69.76 active(isNatList(nil)) 202.20/69.76 active(isNatList(cons(x0, x1))) 202.20/69.76 active(isNatList(take(x0, x1))) 202.20/69.76 active(length(nil)) 202.20/69.76 active(length(cons(x0, x1))) 202.20/69.76 active(take(0, x0)) 202.20/69.76 active(take(s(x0), cons(x1, x2))) 202.20/69.76 mark(zeros) 202.20/69.76 mark(cons(x0, x1)) 202.20/69.76 mark(0) 202.20/69.76 mark(U11(x0)) 202.20/69.76 mark(tt) 202.20/69.76 mark(U21(x0)) 202.20/69.76 mark(U31(x0)) 202.20/69.76 mark(U41(x0, x1)) 202.20/69.76 mark(U42(x0)) 202.20/69.76 mark(isNatIList(x0)) 202.20/69.76 mark(U51(x0, x1)) 202.20/69.76 mark(U52(x0)) 202.20/69.76 mark(isNatList(x0)) 202.20/69.76 mark(U61(x0, x1)) 202.20/69.76 mark(U62(x0)) 202.20/69.76 mark(U71(x0, x1, x2)) 202.20/69.76 mark(U72(x0, x1)) 202.20/69.76 mark(isNat(x0)) 202.20/69.76 mark(s(x0)) 202.20/69.76 mark(length(x0)) 202.20/69.76 mark(U81(x0)) 202.20/69.76 mark(nil) 202.20/69.76 mark(U91(x0, x1, x2, x3)) 202.20/69.76 mark(U92(x0, x1, x2, x3)) 202.20/69.76 mark(U93(x0, x1, x2, x3)) 202.20/69.76 mark(take(x0, x1)) 202.20/69.76 cons(mark(x0), x1) 202.20/69.76 cons(x0, mark(x1)) 202.20/69.76 cons(active(x0), x1) 202.20/69.76 cons(x0, active(x1)) 202.20/69.76 U11(mark(x0)) 202.20/69.76 U11(active(x0)) 202.20/69.76 U21(mark(x0)) 202.20/69.76 U21(active(x0)) 202.20/69.76 U31(mark(x0)) 202.20/69.76 U31(active(x0)) 202.20/69.76 U41(mark(x0), x1) 202.20/69.76 U41(x0, mark(x1)) 202.20/69.76 U41(active(x0), x1) 202.20/69.76 U41(x0, active(x1)) 202.20/69.76 U42(mark(x0)) 202.20/69.76 U42(active(x0)) 202.20/69.76 isNatIList(mark(x0)) 202.20/69.76 isNatIList(active(x0)) 202.20/69.76 U51(mark(x0), x1) 202.20/69.76 U51(x0, mark(x1)) 202.20/69.76 U51(active(x0), x1) 202.20/69.76 U51(x0, active(x1)) 202.20/69.76 U52(mark(x0)) 202.20/69.76 U52(active(x0)) 202.20/69.76 isNatList(mark(x0)) 202.20/69.76 isNatList(active(x0)) 202.20/69.76 U61(mark(x0), x1) 202.20/69.76 U61(x0, mark(x1)) 202.20/69.76 U61(active(x0), x1) 202.20/69.76 U61(x0, active(x1)) 202.20/69.76 U62(mark(x0)) 202.20/69.76 U62(active(x0)) 202.20/69.76 U71(mark(x0), x1, x2) 202.20/69.76 U71(x0, mark(x1), x2) 202.20/69.76 U71(x0, x1, mark(x2)) 202.20/69.76 U71(active(x0), x1, x2) 202.20/69.76 U71(x0, active(x1), x2) 202.20/69.76 U71(x0, x1, active(x2)) 202.20/69.76 U72(mark(x0), x1) 202.20/69.76 U72(x0, mark(x1)) 202.20/69.76 U72(active(x0), x1) 202.20/69.76 U72(x0, active(x1)) 202.20/69.76 isNat(mark(x0)) 202.20/69.76 isNat(active(x0)) 202.20/69.76 s(mark(x0)) 202.20/69.76 s(active(x0)) 202.20/69.76 length(mark(x0)) 202.20/69.76 length(active(x0)) 202.20/69.76 U81(mark(x0)) 202.20/69.76 U81(active(x0)) 202.20/69.76 U91(mark(x0), x1, x2, x3) 202.20/69.76 U91(x0, mark(x1), x2, x3) 202.20/69.76 U91(x0, x1, mark(x2), x3) 202.20/69.76 U91(x0, x1, x2, mark(x3)) 202.20/69.76 U91(active(x0), x1, x2, x3) 202.20/69.76 U91(x0, active(x1), x2, x3) 202.20/69.76 U91(x0, x1, active(x2), x3) 202.20/69.76 U91(x0, x1, x2, active(x3)) 202.20/69.76 U92(mark(x0), x1, x2, x3) 202.20/69.76 U92(x0, mark(x1), x2, x3) 202.20/69.76 U92(x0, x1, mark(x2), x3) 202.20/69.76 U92(x0, x1, x2, mark(x3)) 202.20/69.76 U92(active(x0), x1, x2, x3) 202.20/69.76 U92(x0, active(x1), x2, x3) 202.20/69.76 U92(x0, x1, active(x2), x3) 202.20/69.76 U92(x0, x1, x2, active(x3)) 202.20/69.76 U93(mark(x0), x1, x2, x3) 202.20/69.76 U93(x0, mark(x1), x2, x3) 202.20/69.76 U93(x0, x1, mark(x2), x3) 202.20/69.76 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (155) QReductionProof (EQUIVALENT) 202.20/69.77 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 202.20/69.77 202.20/69.77 cons(mark(x0), x1) 202.20/69.77 cons(x0, mark(x1)) 202.20/69.77 cons(active(x0), x1) 202.20/69.77 cons(x0, active(x1)) 202.20/69.77 U11(mark(x0)) 202.20/69.77 U11(active(x0)) 202.20/69.77 U21(mark(x0)) 202.20/69.77 U21(active(x0)) 202.20/69.77 U31(mark(x0)) 202.20/69.77 U31(active(x0)) 202.20/69.77 U41(mark(x0), x1) 202.20/69.77 U41(x0, mark(x1)) 202.20/69.77 U41(active(x0), x1) 202.20/69.77 U41(x0, active(x1)) 202.20/69.77 U42(mark(x0)) 202.20/69.77 U42(active(x0)) 202.20/69.77 isNatIList(mark(x0)) 202.20/69.77 isNatIList(active(x0)) 202.20/69.77 U51(mark(x0), x1) 202.20/69.77 U51(x0, mark(x1)) 202.20/69.77 U51(active(x0), x1) 202.20/69.77 U51(x0, active(x1)) 202.20/69.77 U52(mark(x0)) 202.20/69.77 U52(active(x0)) 202.20/69.77 isNatList(mark(x0)) 202.20/69.77 isNatList(active(x0)) 202.20/69.77 U61(mark(x0), x1) 202.20/69.77 U61(x0, mark(x1)) 202.20/69.77 U61(active(x0), x1) 202.20/69.77 U61(x0, active(x1)) 202.20/69.77 U62(mark(x0)) 202.20/69.77 U62(active(x0)) 202.20/69.77 U71(mark(x0), x1, x2) 202.20/69.77 U71(x0, mark(x1), x2) 202.20/69.77 U71(x0, x1, mark(x2)) 202.20/69.77 U71(active(x0), x1, x2) 202.20/69.77 U71(x0, active(x1), x2) 202.20/69.77 U71(x0, x1, active(x2)) 202.20/69.77 U72(mark(x0), x1) 202.20/69.77 U72(x0, mark(x1)) 202.20/69.77 U72(active(x0), x1) 202.20/69.77 U72(x0, active(x1)) 202.20/69.77 isNat(mark(x0)) 202.20/69.77 isNat(active(x0)) 202.20/69.77 s(mark(x0)) 202.20/69.77 s(active(x0)) 202.20/69.77 length(mark(x0)) 202.20/69.77 length(active(x0)) 202.20/69.77 U81(mark(x0)) 202.20/69.77 U81(active(x0)) 202.20/69.77 U91(mark(x0), x1, x2, x3) 202.20/69.77 U91(x0, mark(x1), x2, x3) 202.20/69.77 U91(x0, x1, mark(x2), x3) 202.20/69.77 U91(x0, x1, x2, mark(x3)) 202.20/69.77 U91(active(x0), x1, x2, x3) 202.20/69.77 U91(x0, active(x1), x2, x3) 202.20/69.77 U91(x0, x1, active(x2), x3) 202.20/69.77 U91(x0, x1, x2, active(x3)) 202.20/69.77 U92(mark(x0), x1, x2, x3) 202.20/69.77 U92(x0, mark(x1), x2, x3) 202.20/69.77 U92(x0, x1, mark(x2), x3) 202.20/69.77 U92(x0, x1, x2, mark(x3)) 202.20/69.77 U92(active(x0), x1, x2, x3) 202.20/69.77 U92(x0, active(x1), x2, x3) 202.20/69.77 U92(x0, x1, active(x2), x3) 202.20/69.77 U92(x0, x1, x2, active(x3)) 202.20/69.77 U93(mark(x0), x1, x2, x3) 202.20/69.77 U93(x0, mark(x1), x2, x3) 202.20/69.77 U93(x0, x1, mark(x2), x3) 202.20/69.77 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (156) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 CONS(X1, mark(X2)) -> CONS(X1, X2) 202.20/69.77 CONS(mark(X1), X2) -> CONS(X1, X2) 202.20/69.77 CONS(active(X1), X2) -> CONS(X1, X2) 202.20/69.77 CONS(X1, active(X2)) -> CONS(X1, X2) 202.20/69.77 202.20/69.77 R is empty. 202.20/69.77 The set Q consists of the following terms: 202.20/69.77 202.20/69.77 active(zeros) 202.20/69.77 active(U11(tt)) 202.20/69.77 active(U21(tt)) 202.20/69.77 active(U31(tt)) 202.20/69.77 active(U41(tt, x0)) 202.20/69.77 active(U42(tt)) 202.20/69.77 active(U51(tt, x0)) 202.20/69.77 active(U52(tt)) 202.20/69.77 active(U61(tt, x0)) 202.20/69.77 active(U62(tt)) 202.20/69.77 active(U71(tt, x0, x1)) 202.20/69.77 active(U72(tt, x0)) 202.20/69.77 active(U81(tt)) 202.20/69.77 active(U91(tt, x0, x1, x2)) 202.20/69.77 active(U92(tt, x0, x1, x2)) 202.20/69.77 active(U93(tt, x0, x1, x2)) 202.20/69.77 active(isNat(0)) 202.20/69.77 active(isNat(length(x0))) 202.20/69.77 active(isNat(s(x0))) 202.20/69.77 active(isNatIList(x0)) 202.20/69.77 active(isNatList(nil)) 202.20/69.77 active(isNatList(cons(x0, x1))) 202.20/69.77 active(isNatList(take(x0, x1))) 202.20/69.77 active(length(nil)) 202.20/69.77 active(length(cons(x0, x1))) 202.20/69.77 active(take(0, x0)) 202.20/69.77 active(take(s(x0), cons(x1, x2))) 202.20/69.77 mark(zeros) 202.20/69.77 mark(cons(x0, x1)) 202.20/69.77 mark(0) 202.20/69.77 mark(U11(x0)) 202.20/69.77 mark(tt) 202.20/69.77 mark(U21(x0)) 202.20/69.77 mark(U31(x0)) 202.20/69.77 mark(U41(x0, x1)) 202.20/69.77 mark(U42(x0)) 202.20/69.77 mark(isNatIList(x0)) 202.20/69.77 mark(U51(x0, x1)) 202.20/69.77 mark(U52(x0)) 202.20/69.77 mark(isNatList(x0)) 202.20/69.77 mark(U61(x0, x1)) 202.20/69.77 mark(U62(x0)) 202.20/69.77 mark(U71(x0, x1, x2)) 202.20/69.77 mark(U72(x0, x1)) 202.20/69.77 mark(isNat(x0)) 202.20/69.77 mark(s(x0)) 202.20/69.77 mark(length(x0)) 202.20/69.77 mark(U81(x0)) 202.20/69.77 mark(nil) 202.20/69.77 mark(U91(x0, x1, x2, x3)) 202.20/69.77 mark(U92(x0, x1, x2, x3)) 202.20/69.77 mark(U93(x0, x1, x2, x3)) 202.20/69.77 mark(take(x0, x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (157) QDPSizeChangeProof (EQUIVALENT) 202.20/69.77 By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. 202.20/69.77 202.20/69.77 From the DPs we obtained the following set of size-change graphs: 202.20/69.77 *CONS(X1, mark(X2)) -> CONS(X1, X2) 202.20/69.77 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.77 202.20/69.77 202.20/69.77 *CONS(mark(X1), X2) -> CONS(X1, X2) 202.20/69.77 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.77 202.20/69.77 202.20/69.77 *CONS(active(X1), X2) -> CONS(X1, X2) 202.20/69.77 The graph contains the following edges 1 > 1, 2 >= 2 202.20/69.77 202.20/69.77 202.20/69.77 *CONS(X1, active(X2)) -> CONS(X1, X2) 202.20/69.77 The graph contains the following edges 1 >= 1, 2 > 2 202.20/69.77 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (158) 202.20/69.77 YES 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (159) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 202.20/69.77 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.77 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 202.20/69.77 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.77 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 202.20/69.77 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.77 MARK(U62(X)) -> ACTIVE(U62(mark(X))) 202.20/69.77 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.77 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.77 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.77 MARK(s(X)) -> ACTIVE(s(mark(X))) 202.20/69.77 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.77 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(zeros) -> ACTIVE(zeros) 202.20/69.77 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.77 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 202.20/69.77 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.77 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.77 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 202.20/69.77 MARK(U81(X)) -> ACTIVE(U81(mark(X))) 202.20/69.77 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U11(X)) -> MARK(X) 202.20/69.77 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 202.20/69.77 MARK(U21(X)) -> MARK(X) 202.20/69.77 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 202.20/69.77 MARK(U31(X)) -> MARK(X) 202.20/69.77 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.77 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U42(X)) -> MARK(X) 202.20/69.77 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.77 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.77 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.77 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.77 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U52(X)) -> MARK(X) 202.20/69.77 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.77 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.77 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.77 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.77 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U62(X)) -> MARK(X) 202.20/69.77 MARK(U71(X1, X2, X3)) -> MARK(X1) 202.20/69.77 MARK(U72(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.77 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.77 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.77 MARK(s(X)) -> MARK(X) 202.20/69.77 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.77 MARK(length(X)) -> MARK(X) 202.20/69.77 MARK(U81(X)) -> MARK(X) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X2) 202.20/69.77 202.20/69.77 The TRS R consists of the following rules: 202.20/69.77 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 isNatIList(mark(X)) -> isNatIList(X) 202.20/69.77 isNatIList(active(X)) -> isNatIList(X) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 isNatList(mark(X)) -> isNatList(X) 202.20/69.77 isNatList(active(X)) -> isNatList(X) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 isNat(mark(X)) -> isNat(X) 202.20/69.77 isNat(active(X)) -> isNat(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 202.20/69.77 The set Q consists of the following terms: 202.20/69.77 202.20/69.77 active(zeros) 202.20/69.77 active(U11(tt)) 202.20/69.77 active(U21(tt)) 202.20/69.77 active(U31(tt)) 202.20/69.77 active(U41(tt, x0)) 202.20/69.77 active(U42(tt)) 202.20/69.77 active(U51(tt, x0)) 202.20/69.77 active(U52(tt)) 202.20/69.77 active(U61(tt, x0)) 202.20/69.77 active(U62(tt)) 202.20/69.77 active(U71(tt, x0, x1)) 202.20/69.77 active(U72(tt, x0)) 202.20/69.77 active(U81(tt)) 202.20/69.77 active(U91(tt, x0, x1, x2)) 202.20/69.77 active(U92(tt, x0, x1, x2)) 202.20/69.77 active(U93(tt, x0, x1, x2)) 202.20/69.77 active(isNat(0)) 202.20/69.77 active(isNat(length(x0))) 202.20/69.77 active(isNat(s(x0))) 202.20/69.77 active(isNatIList(x0)) 202.20/69.77 active(isNatList(nil)) 202.20/69.77 active(isNatList(cons(x0, x1))) 202.20/69.77 active(isNatList(take(x0, x1))) 202.20/69.77 active(length(nil)) 202.20/69.77 active(length(cons(x0, x1))) 202.20/69.77 active(take(0, x0)) 202.20/69.77 active(take(s(x0), cons(x1, x2))) 202.20/69.77 mark(zeros) 202.20/69.77 mark(cons(x0, x1)) 202.20/69.77 mark(0) 202.20/69.77 mark(U11(x0)) 202.20/69.77 mark(tt) 202.20/69.77 mark(U21(x0)) 202.20/69.77 mark(U31(x0)) 202.20/69.77 mark(U41(x0, x1)) 202.20/69.77 mark(U42(x0)) 202.20/69.77 mark(isNatIList(x0)) 202.20/69.77 mark(U51(x0, x1)) 202.20/69.77 mark(U52(x0)) 202.20/69.77 mark(isNatList(x0)) 202.20/69.77 mark(U61(x0, x1)) 202.20/69.77 mark(U62(x0)) 202.20/69.77 mark(U71(x0, x1, x2)) 202.20/69.77 mark(U72(x0, x1)) 202.20/69.77 mark(isNat(x0)) 202.20/69.77 mark(s(x0)) 202.20/69.77 mark(length(x0)) 202.20/69.77 mark(U81(x0)) 202.20/69.77 mark(nil) 202.20/69.77 mark(U91(x0, x1, x2, x3)) 202.20/69.77 mark(U92(x0, x1, x2, x3)) 202.20/69.77 mark(U93(x0, x1, x2, x3)) 202.20/69.77 mark(take(x0, x1)) 202.20/69.77 cons(mark(x0), x1) 202.20/69.77 cons(x0, mark(x1)) 202.20/69.77 cons(active(x0), x1) 202.20/69.77 cons(x0, active(x1)) 202.20/69.77 U11(mark(x0)) 202.20/69.77 U11(active(x0)) 202.20/69.77 U21(mark(x0)) 202.20/69.77 U21(active(x0)) 202.20/69.77 U31(mark(x0)) 202.20/69.77 U31(active(x0)) 202.20/69.77 U41(mark(x0), x1) 202.20/69.77 U41(x0, mark(x1)) 202.20/69.77 U41(active(x0), x1) 202.20/69.77 U41(x0, active(x1)) 202.20/69.77 U42(mark(x0)) 202.20/69.77 U42(active(x0)) 202.20/69.77 isNatIList(mark(x0)) 202.20/69.77 isNatIList(active(x0)) 202.20/69.77 U51(mark(x0), x1) 202.20/69.77 U51(x0, mark(x1)) 202.20/69.77 U51(active(x0), x1) 202.20/69.77 U51(x0, active(x1)) 202.20/69.77 U52(mark(x0)) 202.20/69.77 U52(active(x0)) 202.20/69.77 isNatList(mark(x0)) 202.20/69.77 isNatList(active(x0)) 202.20/69.77 U61(mark(x0), x1) 202.20/69.77 U61(x0, mark(x1)) 202.20/69.77 U61(active(x0), x1) 202.20/69.77 U61(x0, active(x1)) 202.20/69.77 U62(mark(x0)) 202.20/69.77 U62(active(x0)) 202.20/69.77 U71(mark(x0), x1, x2) 202.20/69.77 U71(x0, mark(x1), x2) 202.20/69.77 U71(x0, x1, mark(x2)) 202.20/69.77 U71(active(x0), x1, x2) 202.20/69.77 U71(x0, active(x1), x2) 202.20/69.77 U71(x0, x1, active(x2)) 202.20/69.77 U72(mark(x0), x1) 202.20/69.77 U72(x0, mark(x1)) 202.20/69.77 U72(active(x0), x1) 202.20/69.77 U72(x0, active(x1)) 202.20/69.77 isNat(mark(x0)) 202.20/69.77 isNat(active(x0)) 202.20/69.77 s(mark(x0)) 202.20/69.77 s(active(x0)) 202.20/69.77 length(mark(x0)) 202.20/69.77 length(active(x0)) 202.20/69.77 U81(mark(x0)) 202.20/69.77 U81(active(x0)) 202.20/69.77 U91(mark(x0), x1, x2, x3) 202.20/69.77 U91(x0, mark(x1), x2, x3) 202.20/69.77 U91(x0, x1, mark(x2), x3) 202.20/69.77 U91(x0, x1, x2, mark(x3)) 202.20/69.77 U91(active(x0), x1, x2, x3) 202.20/69.77 U91(x0, active(x1), x2, x3) 202.20/69.77 U91(x0, x1, active(x2), x3) 202.20/69.77 U91(x0, x1, x2, active(x3)) 202.20/69.77 U92(mark(x0), x1, x2, x3) 202.20/69.77 U92(x0, mark(x1), x2, x3) 202.20/69.77 U92(x0, x1, mark(x2), x3) 202.20/69.77 U92(x0, x1, x2, mark(x3)) 202.20/69.77 U92(active(x0), x1, x2, x3) 202.20/69.77 U92(x0, active(x1), x2, x3) 202.20/69.77 U92(x0, x1, active(x2), x3) 202.20/69.77 U92(x0, x1, x2, active(x3)) 202.20/69.77 U93(mark(x0), x1, x2, x3) 202.20/69.77 U93(x0, mark(x1), x2, x3) 202.20/69.77 U93(x0, x1, mark(x2), x3) 202.20/69.77 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (160) UsableRulesProof (EQUIVALENT) 202.20/69.77 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (161) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 202.20/69.77 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.77 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 202.20/69.77 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.77 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 202.20/69.77 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.77 MARK(U62(X)) -> ACTIVE(U62(mark(X))) 202.20/69.77 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.77 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.77 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.77 MARK(s(X)) -> ACTIVE(s(mark(X))) 202.20/69.77 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.77 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(zeros) -> ACTIVE(zeros) 202.20/69.77 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.77 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 202.20/69.77 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.77 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.77 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 202.20/69.77 MARK(U81(X)) -> ACTIVE(U81(mark(X))) 202.20/69.77 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U11(X)) -> MARK(X) 202.20/69.77 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 202.20/69.77 MARK(U21(X)) -> MARK(X) 202.20/69.77 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 202.20/69.77 MARK(U31(X)) -> MARK(X) 202.20/69.77 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.77 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U42(X)) -> MARK(X) 202.20/69.77 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.77 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.77 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.77 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.77 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U52(X)) -> MARK(X) 202.20/69.77 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.77 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.77 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.77 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.77 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U62(X)) -> MARK(X) 202.20/69.77 MARK(U71(X1, X2, X3)) -> MARK(X1) 202.20/69.77 MARK(U72(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.77 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.77 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.77 MARK(s(X)) -> MARK(X) 202.20/69.77 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.77 MARK(length(X)) -> MARK(X) 202.20/69.77 MARK(U81(X)) -> MARK(X) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X2) 202.20/69.77 202.20/69.77 The TRS R consists of the following rules: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 202.20/69.77 The set Q consists of the following terms: 202.20/69.77 202.20/69.77 active(zeros) 202.20/69.77 active(U11(tt)) 202.20/69.77 active(U21(tt)) 202.20/69.77 active(U31(tt)) 202.20/69.77 active(U41(tt, x0)) 202.20/69.77 active(U42(tt)) 202.20/69.77 active(U51(tt, x0)) 202.20/69.77 active(U52(tt)) 202.20/69.77 active(U61(tt, x0)) 202.20/69.77 active(U62(tt)) 202.20/69.77 active(U71(tt, x0, x1)) 202.20/69.77 active(U72(tt, x0)) 202.20/69.77 active(U81(tt)) 202.20/69.77 active(U91(tt, x0, x1, x2)) 202.20/69.77 active(U92(tt, x0, x1, x2)) 202.20/69.77 active(U93(tt, x0, x1, x2)) 202.20/69.77 active(isNat(0)) 202.20/69.77 active(isNat(length(x0))) 202.20/69.77 active(isNat(s(x0))) 202.20/69.77 active(isNatIList(x0)) 202.20/69.77 active(isNatList(nil)) 202.20/69.77 active(isNatList(cons(x0, x1))) 202.20/69.77 active(isNatList(take(x0, x1))) 202.20/69.77 active(length(nil)) 202.20/69.77 active(length(cons(x0, x1))) 202.20/69.77 active(take(0, x0)) 202.20/69.77 active(take(s(x0), cons(x1, x2))) 202.20/69.77 mark(zeros) 202.20/69.77 mark(cons(x0, x1)) 202.20/69.77 mark(0) 202.20/69.77 mark(U11(x0)) 202.20/69.77 mark(tt) 202.20/69.77 mark(U21(x0)) 202.20/69.77 mark(U31(x0)) 202.20/69.77 mark(U41(x0, x1)) 202.20/69.77 mark(U42(x0)) 202.20/69.77 mark(isNatIList(x0)) 202.20/69.77 mark(U51(x0, x1)) 202.20/69.77 mark(U52(x0)) 202.20/69.77 mark(isNatList(x0)) 202.20/69.77 mark(U61(x0, x1)) 202.20/69.77 mark(U62(x0)) 202.20/69.77 mark(U71(x0, x1, x2)) 202.20/69.77 mark(U72(x0, x1)) 202.20/69.77 mark(isNat(x0)) 202.20/69.77 mark(s(x0)) 202.20/69.77 mark(length(x0)) 202.20/69.77 mark(U81(x0)) 202.20/69.77 mark(nil) 202.20/69.77 mark(U91(x0, x1, x2, x3)) 202.20/69.77 mark(U92(x0, x1, x2, x3)) 202.20/69.77 mark(U93(x0, x1, x2, x3)) 202.20/69.77 mark(take(x0, x1)) 202.20/69.77 cons(mark(x0), x1) 202.20/69.77 cons(x0, mark(x1)) 202.20/69.77 cons(active(x0), x1) 202.20/69.77 cons(x0, active(x1)) 202.20/69.77 U11(mark(x0)) 202.20/69.77 U11(active(x0)) 202.20/69.77 U21(mark(x0)) 202.20/69.77 U21(active(x0)) 202.20/69.77 U31(mark(x0)) 202.20/69.77 U31(active(x0)) 202.20/69.77 U41(mark(x0), x1) 202.20/69.77 U41(x0, mark(x1)) 202.20/69.77 U41(active(x0), x1) 202.20/69.77 U41(x0, active(x1)) 202.20/69.77 U42(mark(x0)) 202.20/69.77 U42(active(x0)) 202.20/69.77 isNatIList(mark(x0)) 202.20/69.77 isNatIList(active(x0)) 202.20/69.77 U51(mark(x0), x1) 202.20/69.77 U51(x0, mark(x1)) 202.20/69.77 U51(active(x0), x1) 202.20/69.77 U51(x0, active(x1)) 202.20/69.77 U52(mark(x0)) 202.20/69.77 U52(active(x0)) 202.20/69.77 isNatList(mark(x0)) 202.20/69.77 isNatList(active(x0)) 202.20/69.77 U61(mark(x0), x1) 202.20/69.77 U61(x0, mark(x1)) 202.20/69.77 U61(active(x0), x1) 202.20/69.77 U61(x0, active(x1)) 202.20/69.77 U62(mark(x0)) 202.20/69.77 U62(active(x0)) 202.20/69.77 U71(mark(x0), x1, x2) 202.20/69.77 U71(x0, mark(x1), x2) 202.20/69.77 U71(x0, x1, mark(x2)) 202.20/69.77 U71(active(x0), x1, x2) 202.20/69.77 U71(x0, active(x1), x2) 202.20/69.77 U71(x0, x1, active(x2)) 202.20/69.77 U72(mark(x0), x1) 202.20/69.77 U72(x0, mark(x1)) 202.20/69.77 U72(active(x0), x1) 202.20/69.77 U72(x0, active(x1)) 202.20/69.77 isNat(mark(x0)) 202.20/69.77 isNat(active(x0)) 202.20/69.77 s(mark(x0)) 202.20/69.77 s(active(x0)) 202.20/69.77 length(mark(x0)) 202.20/69.77 length(active(x0)) 202.20/69.77 U81(mark(x0)) 202.20/69.77 U81(active(x0)) 202.20/69.77 U91(mark(x0), x1, x2, x3) 202.20/69.77 U91(x0, mark(x1), x2, x3) 202.20/69.77 U91(x0, x1, mark(x2), x3) 202.20/69.77 U91(x0, x1, x2, mark(x3)) 202.20/69.77 U91(active(x0), x1, x2, x3) 202.20/69.77 U91(x0, active(x1), x2, x3) 202.20/69.77 U91(x0, x1, active(x2), x3) 202.20/69.77 U91(x0, x1, x2, active(x3)) 202.20/69.77 U92(mark(x0), x1, x2, x3) 202.20/69.77 U92(x0, mark(x1), x2, x3) 202.20/69.77 U92(x0, x1, mark(x2), x3) 202.20/69.77 U92(x0, x1, x2, mark(x3)) 202.20/69.77 U92(active(x0), x1, x2, x3) 202.20/69.77 U92(x0, active(x1), x2, x3) 202.20/69.77 U92(x0, x1, active(x2), x3) 202.20/69.77 U92(x0, x1, x2, active(x3)) 202.20/69.77 U93(mark(x0), x1, x2, x3) 202.20/69.77 U93(x0, mark(x1), x2, x3) 202.20/69.77 U93(x0, x1, mark(x2), x3) 202.20/69.77 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (162) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.77 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.77 202.20/69.77 Strictly oriented dependency pairs: 202.20/69.77 202.20/69.77 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 202.20/69.77 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 202.20/69.77 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 202.20/69.77 MARK(U62(X)) -> ACTIVE(U62(mark(X))) 202.20/69.77 MARK(s(X)) -> ACTIVE(s(mark(X))) 202.20/69.77 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 202.20/69.77 MARK(U81(X)) -> ACTIVE(U81(mark(X))) 202.20/69.77 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 202.20/69.77 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 202.20/69.77 202.20/69.77 202.20/69.77 Used ordering: Polynomial interpretation [POLO]: 202.20/69.77 202.20/69.77 POL(0) = 0 202.20/69.77 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.77 POL(MARK(x_1)) = 2 202.20/69.77 POL(U11(x_1)) = 0 202.20/69.77 POL(U21(x_1)) = 0 202.20/69.77 POL(U31(x_1)) = 0 202.20/69.77 POL(U41(x_1, x_2)) = 1 202.20/69.77 POL(U42(x_1)) = 0 202.20/69.77 POL(U51(x_1, x_2)) = 1 202.20/69.77 POL(U52(x_1)) = 0 202.20/69.77 POL(U61(x_1, x_2)) = 1 202.20/69.77 POL(U62(x_1)) = 0 202.20/69.77 POL(U71(x_1, x_2, x_3)) = 1 202.20/69.77 POL(U72(x_1, x_2)) = 1 202.20/69.77 POL(U81(x_1)) = 0 202.20/69.77 POL(U91(x_1, x_2, x_3, x_4)) = 1 202.20/69.77 POL(U92(x_1, x_2, x_3, x_4)) = 1 202.20/69.77 POL(U93(x_1, x_2, x_3, x_4)) = 1 202.20/69.77 POL(active(x_1)) = 0 202.20/69.77 POL(cons(x_1, x_2)) = 0 202.20/69.77 POL(isNat(x_1)) = 1 202.20/69.77 POL(isNatIList(x_1)) = 1 202.20/69.77 POL(isNatList(x_1)) = 1 202.20/69.77 POL(length(x_1)) = 1 202.20/69.77 POL(mark(x_1)) = 0 202.20/69.77 POL(nil) = 0 202.20/69.77 POL(s(x_1)) = 0 202.20/69.77 POL(take(x_1, x_2)) = 1 202.20/69.77 POL(tt) = 0 202.20/69.77 POL(zeros) = 1 202.20/69.77 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (163) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.77 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.77 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.77 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.77 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.77 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.77 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.77 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(zeros) -> ACTIVE(zeros) 202.20/69.77 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.77 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.77 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.77 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 202.20/69.77 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U11(X)) -> MARK(X) 202.20/69.77 MARK(U21(X)) -> MARK(X) 202.20/69.77 MARK(U31(X)) -> MARK(X) 202.20/69.77 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.77 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U42(X)) -> MARK(X) 202.20/69.77 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.77 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.77 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.77 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.77 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U52(X)) -> MARK(X) 202.20/69.77 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.77 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.77 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.77 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.77 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U62(X)) -> MARK(X) 202.20/69.77 MARK(U71(X1, X2, X3)) -> MARK(X1) 202.20/69.77 MARK(U72(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.77 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.77 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.77 MARK(s(X)) -> MARK(X) 202.20/69.77 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.77 MARK(length(X)) -> MARK(X) 202.20/69.77 MARK(U81(X)) -> MARK(X) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X2) 202.20/69.77 202.20/69.77 The TRS R consists of the following rules: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 202.20/69.77 The set Q consists of the following terms: 202.20/69.77 202.20/69.77 active(zeros) 202.20/69.77 active(U11(tt)) 202.20/69.77 active(U21(tt)) 202.20/69.77 active(U31(tt)) 202.20/69.77 active(U41(tt, x0)) 202.20/69.77 active(U42(tt)) 202.20/69.77 active(U51(tt, x0)) 202.20/69.77 active(U52(tt)) 202.20/69.77 active(U61(tt, x0)) 202.20/69.77 active(U62(tt)) 202.20/69.77 active(U71(tt, x0, x1)) 202.20/69.77 active(U72(tt, x0)) 202.20/69.77 active(U81(tt)) 202.20/69.77 active(U91(tt, x0, x1, x2)) 202.20/69.77 active(U92(tt, x0, x1, x2)) 202.20/69.77 active(U93(tt, x0, x1, x2)) 202.20/69.77 active(isNat(0)) 202.20/69.77 active(isNat(length(x0))) 202.20/69.77 active(isNat(s(x0))) 202.20/69.77 active(isNatIList(x0)) 202.20/69.77 active(isNatList(nil)) 202.20/69.77 active(isNatList(cons(x0, x1))) 202.20/69.77 active(isNatList(take(x0, x1))) 202.20/69.77 active(length(nil)) 202.20/69.77 active(length(cons(x0, x1))) 202.20/69.77 active(take(0, x0)) 202.20/69.77 active(take(s(x0), cons(x1, x2))) 202.20/69.77 mark(zeros) 202.20/69.77 mark(cons(x0, x1)) 202.20/69.77 mark(0) 202.20/69.77 mark(U11(x0)) 202.20/69.77 mark(tt) 202.20/69.77 mark(U21(x0)) 202.20/69.77 mark(U31(x0)) 202.20/69.77 mark(U41(x0, x1)) 202.20/69.77 mark(U42(x0)) 202.20/69.77 mark(isNatIList(x0)) 202.20/69.77 mark(U51(x0, x1)) 202.20/69.77 mark(U52(x0)) 202.20/69.77 mark(isNatList(x0)) 202.20/69.77 mark(U61(x0, x1)) 202.20/69.77 mark(U62(x0)) 202.20/69.77 mark(U71(x0, x1, x2)) 202.20/69.77 mark(U72(x0, x1)) 202.20/69.77 mark(isNat(x0)) 202.20/69.77 mark(s(x0)) 202.20/69.77 mark(length(x0)) 202.20/69.77 mark(U81(x0)) 202.20/69.77 mark(nil) 202.20/69.77 mark(U91(x0, x1, x2, x3)) 202.20/69.77 mark(U92(x0, x1, x2, x3)) 202.20/69.77 mark(U93(x0, x1, x2, x3)) 202.20/69.77 mark(take(x0, x1)) 202.20/69.77 cons(mark(x0), x1) 202.20/69.77 cons(x0, mark(x1)) 202.20/69.77 cons(active(x0), x1) 202.20/69.77 cons(x0, active(x1)) 202.20/69.77 U11(mark(x0)) 202.20/69.77 U11(active(x0)) 202.20/69.77 U21(mark(x0)) 202.20/69.77 U21(active(x0)) 202.20/69.77 U31(mark(x0)) 202.20/69.77 U31(active(x0)) 202.20/69.77 U41(mark(x0), x1) 202.20/69.77 U41(x0, mark(x1)) 202.20/69.77 U41(active(x0), x1) 202.20/69.77 U41(x0, active(x1)) 202.20/69.77 U42(mark(x0)) 202.20/69.77 U42(active(x0)) 202.20/69.77 isNatIList(mark(x0)) 202.20/69.77 isNatIList(active(x0)) 202.20/69.77 U51(mark(x0), x1) 202.20/69.77 U51(x0, mark(x1)) 202.20/69.77 U51(active(x0), x1) 202.20/69.77 U51(x0, active(x1)) 202.20/69.77 U52(mark(x0)) 202.20/69.77 U52(active(x0)) 202.20/69.77 isNatList(mark(x0)) 202.20/69.77 isNatList(active(x0)) 202.20/69.77 U61(mark(x0), x1) 202.20/69.77 U61(x0, mark(x1)) 202.20/69.77 U61(active(x0), x1) 202.20/69.77 U61(x0, active(x1)) 202.20/69.77 U62(mark(x0)) 202.20/69.77 U62(active(x0)) 202.20/69.77 U71(mark(x0), x1, x2) 202.20/69.77 U71(x0, mark(x1), x2) 202.20/69.77 U71(x0, x1, mark(x2)) 202.20/69.77 U71(active(x0), x1, x2) 202.20/69.77 U71(x0, active(x1), x2) 202.20/69.77 U71(x0, x1, active(x2)) 202.20/69.77 U72(mark(x0), x1) 202.20/69.77 U72(x0, mark(x1)) 202.20/69.77 U72(active(x0), x1) 202.20/69.77 U72(x0, active(x1)) 202.20/69.77 isNat(mark(x0)) 202.20/69.77 isNat(active(x0)) 202.20/69.77 s(mark(x0)) 202.20/69.77 s(active(x0)) 202.20/69.77 length(mark(x0)) 202.20/69.77 length(active(x0)) 202.20/69.77 U81(mark(x0)) 202.20/69.77 U81(active(x0)) 202.20/69.77 U91(mark(x0), x1, x2, x3) 202.20/69.77 U91(x0, mark(x1), x2, x3) 202.20/69.77 U91(x0, x1, mark(x2), x3) 202.20/69.77 U91(x0, x1, x2, mark(x3)) 202.20/69.77 U91(active(x0), x1, x2, x3) 202.20/69.77 U91(x0, active(x1), x2, x3) 202.20/69.77 U91(x0, x1, active(x2), x3) 202.20/69.77 U91(x0, x1, x2, active(x3)) 202.20/69.77 U92(mark(x0), x1, x2, x3) 202.20/69.77 U92(x0, mark(x1), x2, x3) 202.20/69.77 U92(x0, x1, mark(x2), x3) 202.20/69.77 U92(x0, x1, x2, mark(x3)) 202.20/69.77 U92(active(x0), x1, x2, x3) 202.20/69.77 U92(x0, active(x1), x2, x3) 202.20/69.77 U92(x0, x1, active(x2), x3) 202.20/69.77 U92(x0, x1, x2, active(x3)) 202.20/69.77 U93(mark(x0), x1, x2, x3) 202.20/69.77 U93(x0, mark(x1), x2, x3) 202.20/69.77 U93(x0, x1, mark(x2), x3) 202.20/69.77 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (164) QDPOrderProof (EQUIVALENT) 202.20/69.77 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.77 202.20/69.77 202.20/69.77 The following pairs can be oriented strictly and are deleted. 202.20/69.77 202.20/69.77 MARK(U71(X1, X2, X3)) -> MARK(X1) 202.20/69.77 MARK(U72(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(length(X)) -> MARK(X) 202.20/69.77 The remaining pairs can at least be oriented weakly. 202.20/69.77 Used ordering: Polynomial interpretation [POLO]: 202.20/69.77 202.20/69.77 POL(0) = 0 202.20/69.77 POL(ACTIVE(x_1)) = x_1 202.20/69.77 POL(MARK(x_1)) = x_1 202.20/69.77 POL(U11(x_1)) = x_1 202.20/69.77 POL(U21(x_1)) = x_1 202.20/69.77 POL(U31(x_1)) = x_1 202.20/69.77 POL(U41(x_1, x_2)) = x_1 202.20/69.77 POL(U42(x_1)) = x_1 202.20/69.77 POL(U51(x_1, x_2)) = x_1 202.20/69.77 POL(U52(x_1)) = x_1 202.20/69.77 POL(U61(x_1, x_2)) = x_1 202.20/69.77 POL(U62(x_1)) = x_1 202.20/69.77 POL(U71(x_1, x_2, x_3)) = 1 + x_1 + x_2 202.20/69.77 POL(U72(x_1, x_2)) = 1 + x_1 + x_2 202.20/69.77 POL(U81(x_1)) = x_1 202.20/69.77 POL(U91(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 202.20/69.77 POL(U92(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 202.20/69.77 POL(U93(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 202.20/69.77 POL(active(x_1)) = x_1 202.20/69.77 POL(cons(x_1, x_2)) = x_1 + x_2 202.20/69.77 POL(isNat(x_1)) = 0 202.20/69.77 POL(isNatIList(x_1)) = 0 202.20/69.77 POL(isNatList(x_1)) = 0 202.20/69.77 POL(length(x_1)) = 1 + x_1 202.20/69.77 POL(mark(x_1)) = x_1 202.20/69.77 POL(nil) = 0 202.20/69.77 POL(s(x_1)) = x_1 202.20/69.77 POL(take(x_1, x_2)) = x_1 + x_2 202.20/69.77 POL(tt) = 0 202.20/69.77 POL(zeros) = 0 202.20/69.77 202.20/69.77 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (165) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.77 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.77 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.77 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.77 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.77 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.77 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.77 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(zeros) -> ACTIVE(zeros) 202.20/69.77 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.77 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.77 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.77 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 202.20/69.77 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U11(X)) -> MARK(X) 202.20/69.77 MARK(U21(X)) -> MARK(X) 202.20/69.77 MARK(U31(X)) -> MARK(X) 202.20/69.77 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.77 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U42(X)) -> MARK(X) 202.20/69.77 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.77 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.77 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.77 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.77 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U52(X)) -> MARK(X) 202.20/69.77 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.77 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.77 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.77 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.77 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U62(X)) -> MARK(X) 202.20/69.77 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.77 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.77 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.77 MARK(s(X)) -> MARK(X) 202.20/69.77 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.77 MARK(U81(X)) -> MARK(X) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X2) 202.20/69.77 202.20/69.77 The TRS R consists of the following rules: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 202.20/69.77 The set Q consists of the following terms: 202.20/69.77 202.20/69.77 active(zeros) 202.20/69.77 active(U11(tt)) 202.20/69.77 active(U21(tt)) 202.20/69.77 active(U31(tt)) 202.20/69.77 active(U41(tt, x0)) 202.20/69.77 active(U42(tt)) 202.20/69.77 active(U51(tt, x0)) 202.20/69.77 active(U52(tt)) 202.20/69.77 active(U61(tt, x0)) 202.20/69.77 active(U62(tt)) 202.20/69.77 active(U71(tt, x0, x1)) 202.20/69.77 active(U72(tt, x0)) 202.20/69.77 active(U81(tt)) 202.20/69.77 active(U91(tt, x0, x1, x2)) 202.20/69.77 active(U92(tt, x0, x1, x2)) 202.20/69.77 active(U93(tt, x0, x1, x2)) 202.20/69.77 active(isNat(0)) 202.20/69.77 active(isNat(length(x0))) 202.20/69.77 active(isNat(s(x0))) 202.20/69.77 active(isNatIList(x0)) 202.20/69.77 active(isNatList(nil)) 202.20/69.77 active(isNatList(cons(x0, x1))) 202.20/69.77 active(isNatList(take(x0, x1))) 202.20/69.77 active(length(nil)) 202.20/69.77 active(length(cons(x0, x1))) 202.20/69.77 active(take(0, x0)) 202.20/69.77 active(take(s(x0), cons(x1, x2))) 202.20/69.77 mark(zeros) 202.20/69.77 mark(cons(x0, x1)) 202.20/69.77 mark(0) 202.20/69.77 mark(U11(x0)) 202.20/69.77 mark(tt) 202.20/69.77 mark(U21(x0)) 202.20/69.77 mark(U31(x0)) 202.20/69.77 mark(U41(x0, x1)) 202.20/69.77 mark(U42(x0)) 202.20/69.77 mark(isNatIList(x0)) 202.20/69.77 mark(U51(x0, x1)) 202.20/69.77 mark(U52(x0)) 202.20/69.77 mark(isNatList(x0)) 202.20/69.77 mark(U61(x0, x1)) 202.20/69.77 mark(U62(x0)) 202.20/69.77 mark(U71(x0, x1, x2)) 202.20/69.77 mark(U72(x0, x1)) 202.20/69.77 mark(isNat(x0)) 202.20/69.77 mark(s(x0)) 202.20/69.77 mark(length(x0)) 202.20/69.77 mark(U81(x0)) 202.20/69.77 mark(nil) 202.20/69.77 mark(U91(x0, x1, x2, x3)) 202.20/69.77 mark(U92(x0, x1, x2, x3)) 202.20/69.77 mark(U93(x0, x1, x2, x3)) 202.20/69.77 mark(take(x0, x1)) 202.20/69.77 cons(mark(x0), x1) 202.20/69.77 cons(x0, mark(x1)) 202.20/69.77 cons(active(x0), x1) 202.20/69.77 cons(x0, active(x1)) 202.20/69.77 U11(mark(x0)) 202.20/69.77 U11(active(x0)) 202.20/69.77 U21(mark(x0)) 202.20/69.77 U21(active(x0)) 202.20/69.77 U31(mark(x0)) 202.20/69.77 U31(active(x0)) 202.20/69.77 U41(mark(x0), x1) 202.20/69.77 U41(x0, mark(x1)) 202.20/69.77 U41(active(x0), x1) 202.20/69.77 U41(x0, active(x1)) 202.20/69.77 U42(mark(x0)) 202.20/69.77 U42(active(x0)) 202.20/69.77 isNatIList(mark(x0)) 202.20/69.77 isNatIList(active(x0)) 202.20/69.77 U51(mark(x0), x1) 202.20/69.77 U51(x0, mark(x1)) 202.20/69.77 U51(active(x0), x1) 202.20/69.77 U51(x0, active(x1)) 202.20/69.77 U52(mark(x0)) 202.20/69.77 U52(active(x0)) 202.20/69.77 isNatList(mark(x0)) 202.20/69.77 isNatList(active(x0)) 202.20/69.77 U61(mark(x0), x1) 202.20/69.77 U61(x0, mark(x1)) 202.20/69.77 U61(active(x0), x1) 202.20/69.77 U61(x0, active(x1)) 202.20/69.77 U62(mark(x0)) 202.20/69.77 U62(active(x0)) 202.20/69.77 U71(mark(x0), x1, x2) 202.20/69.77 U71(x0, mark(x1), x2) 202.20/69.77 U71(x0, x1, mark(x2)) 202.20/69.77 U71(active(x0), x1, x2) 202.20/69.77 U71(x0, active(x1), x2) 202.20/69.77 U71(x0, x1, active(x2)) 202.20/69.77 U72(mark(x0), x1) 202.20/69.77 U72(x0, mark(x1)) 202.20/69.77 U72(active(x0), x1) 202.20/69.77 U72(x0, active(x1)) 202.20/69.77 isNat(mark(x0)) 202.20/69.77 isNat(active(x0)) 202.20/69.77 s(mark(x0)) 202.20/69.77 s(active(x0)) 202.20/69.77 length(mark(x0)) 202.20/69.77 length(active(x0)) 202.20/69.77 U81(mark(x0)) 202.20/69.77 U81(active(x0)) 202.20/69.77 U91(mark(x0), x1, x2, x3) 202.20/69.77 U91(x0, mark(x1), x2, x3) 202.20/69.77 U91(x0, x1, mark(x2), x3) 202.20/69.77 U91(x0, x1, x2, mark(x3)) 202.20/69.77 U91(active(x0), x1, x2, x3) 202.20/69.77 U91(x0, active(x1), x2, x3) 202.20/69.77 U91(x0, x1, active(x2), x3) 202.20/69.77 U91(x0, x1, x2, active(x3)) 202.20/69.77 U92(mark(x0), x1, x2, x3) 202.20/69.77 U92(x0, mark(x1), x2, x3) 202.20/69.77 U92(x0, x1, mark(x2), x3) 202.20/69.77 U92(x0, x1, x2, mark(x3)) 202.20/69.77 U92(active(x0), x1, x2, x3) 202.20/69.77 U92(x0, active(x1), x2, x3) 202.20/69.77 U92(x0, x1, active(x2), x3) 202.20/69.77 U92(x0, x1, x2, active(x3)) 202.20/69.77 U93(mark(x0), x1, x2, x3) 202.20/69.77 U93(x0, mark(x1), x2, x3) 202.20/69.77 U93(x0, x1, mark(x2), x3) 202.20/69.77 U93(x0, x1, x2, mark(x3)) 202.20/69.77 U93(active(x0), x1, x2, x3) 202.20/69.77 U93(x0, active(x1), x2, x3) 202.20/69.77 U93(x0, x1, active(x2), x3) 202.20/69.77 U93(x0, x1, x2, active(x3)) 202.20/69.77 take(mark(x0), x1) 202.20/69.77 take(x0, mark(x1)) 202.20/69.77 take(active(x0), x1) 202.20/69.77 take(x0, active(x1)) 202.20/69.77 202.20/69.77 We have to consider all minimal (P,Q,R)-chains. 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (166) QDPOrderProof (EQUIVALENT) 202.20/69.77 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.77 202.20/69.77 202.20/69.77 The following pairs can be oriented strictly and are deleted. 202.20/69.77 202.20/69.77 ACTIVE(take(0, IL)) -> MARK(U81(isNatIList(IL))) 202.20/69.77 ACTIVE(take(s(M), cons(N, IL))) -> MARK(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 MARK(U81(X)) -> MARK(X) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> MARK(X2) 202.20/69.77 The remaining pairs can at least be oriented weakly. 202.20/69.77 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.77 202.20/69.77 POL( ACTIVE_1(x_1) ) = 2x_1 202.20/69.77 POL( U41_2(x_1, x_2) ) = x_1 202.20/69.77 POL( U51_2(x_1, x_2) ) = x_1 202.20/69.77 POL( U61_2(x_1, x_2) ) = 2x_1 202.20/69.77 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.77 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.77 POL( U91_4(x_1, ..., x_4) ) = x_1 + x_3 + x_4 202.20/69.77 POL( U92_4(x_1, ..., x_4) ) = 2x_1 + x_4 202.20/69.77 POL( U93_4(x_1, ..., x_4) ) = 2x_1 + x_4 202.20/69.77 POL( length_1(x_1) ) = max{0, -2} 202.20/69.77 POL( take_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 202.20/69.77 POL( mark_1(x_1) ) = x_1 202.20/69.77 POL( zeros ) = 0 202.20/69.77 POL( active_1(x_1) ) = x_1 202.20/69.77 POL( cons_2(x_1, x_2) ) = x_1 202.20/69.77 POL( 0 ) = 0 202.20/69.77 POL( tt ) = 0 202.20/69.77 POL( U42_1(x_1) ) = 2x_1 202.20/69.77 POL( isNatIList_1(x_1) ) = 0 202.20/69.77 POL( U52_1(x_1) ) = 2x_1 202.20/69.77 POL( isNatList_1(x_1) ) = 0 202.20/69.77 POL( U62_1(x_1) ) = x_1 202.20/69.77 POL( isNat_1(x_1) ) = 0 202.20/69.77 POL( s_1(x_1) ) = x_1 202.20/69.77 POL( U11_1(x_1) ) = 2x_1 202.20/69.77 POL( U21_1(x_1) ) = 2x_1 202.20/69.77 POL( U31_1(x_1) ) = 2x_1 202.20/69.77 POL( U81_1(x_1) ) = 2x_1 + 1 202.20/69.77 POL( nil ) = 0 202.20/69.77 POL( MARK_1(x_1) ) = 2x_1 202.20/69.77 202.20/69.77 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.77 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.77 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.77 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.77 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.77 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.77 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.77 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.77 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.77 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.77 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.77 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.77 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.77 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.77 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.77 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U11(active(X)) -> U11(X) 202.20/69.77 U11(mark(X)) -> U11(X) 202.20/69.77 U21(active(X)) -> U21(X) 202.20/69.77 U21(mark(X)) -> U21(X) 202.20/69.77 U31(active(X)) -> U31(X) 202.20/69.77 U31(mark(X)) -> U31(X) 202.20/69.77 U81(active(X)) -> U81(X) 202.20/69.77 U81(mark(X)) -> U81(X) 202.20/69.77 202.20/69.77 202.20/69.77 ---------------------------------------- 202.20/69.77 202.20/69.77 (167) 202.20/69.77 Obligation: 202.20/69.77 Q DP problem: 202.20/69.77 The TRS P consists of the following rules: 202.20/69.77 202.20/69.77 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.77 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.77 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.77 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.77 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.77 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.77 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.77 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.77 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(zeros) -> ACTIVE(zeros) 202.20/69.77 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.77 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.77 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.77 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U11(X)) -> MARK(X) 202.20/69.77 MARK(U21(X)) -> MARK(X) 202.20/69.77 MARK(U31(X)) -> MARK(X) 202.20/69.77 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.77 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U42(X)) -> MARK(X) 202.20/69.77 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.77 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.77 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.77 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.77 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U52(X)) -> MARK(X) 202.20/69.77 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.77 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.77 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.77 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.77 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.77 MARK(U62(X)) -> MARK(X) 202.20/69.77 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.77 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.77 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.77 MARK(s(X)) -> MARK(X) 202.20/69.77 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.77 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.77 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.77 202.20/69.77 The TRS R consists of the following rules: 202.20/69.77 202.20/69.77 mark(zeros) -> active(zeros) 202.20/69.77 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.77 active(zeros) -> mark(cons(0, zeros)) 202.20/69.77 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.77 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.77 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.77 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.77 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.77 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.77 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.77 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.77 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.77 mark(s(X)) -> active(s(mark(X))) 202.20/69.77 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.77 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.77 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.77 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.77 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.77 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.77 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.77 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.77 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.77 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.77 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.77 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.77 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.77 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.77 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.77 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.77 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.77 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.77 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.77 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.77 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.77 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.77 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.77 mark(0) -> active(0) 202.20/69.77 mark(tt) -> active(tt) 202.20/69.77 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.77 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.77 mark(isNat(X)) -> active(isNat(X)) 202.20/69.77 mark(length(X)) -> active(length(mark(X))) 202.20/69.77 mark(nil) -> active(nil) 202.20/69.77 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.77 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.77 take(mark(X1), X2) -> take(X1, X2) 202.20/69.77 take(active(X1), X2) -> take(X1, X2) 202.20/69.77 take(X1, active(X2)) -> take(X1, X2) 202.20/69.77 active(U11(tt)) -> mark(tt) 202.20/69.77 active(U21(tt)) -> mark(tt) 202.20/69.77 active(U31(tt)) -> mark(tt) 202.20/69.77 active(U42(tt)) -> mark(tt) 202.20/69.77 active(U52(tt)) -> mark(tt) 202.20/69.77 active(U62(tt)) -> mark(tt) 202.20/69.77 active(U81(tt)) -> mark(nil) 202.20/69.77 active(isNat(0)) -> mark(tt) 202.20/69.77 active(isNatIList(zeros)) -> mark(tt) 202.20/69.77 active(isNatList(nil)) -> mark(tt) 202.20/69.77 active(length(nil)) -> mark(0) 202.20/69.77 length(active(X)) -> length(X) 202.20/69.77 length(mark(X)) -> length(X) 202.20/69.77 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.77 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.77 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.77 U42(active(X)) -> U42(X) 202.20/69.77 U42(mark(X)) -> U42(X) 202.20/69.77 U52(active(X)) -> U52(X) 202.20/69.77 U52(mark(X)) -> U52(X) 202.20/69.77 U62(active(X)) -> U62(X) 202.20/69.77 U62(mark(X)) -> U62(X) 202.20/69.77 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.77 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.77 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.77 s(active(X)) -> s(X) 202.20/69.77 s(mark(X)) -> s(X) 202.20/69.77 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.77 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (168) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.78 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.78 202.20/69.78 Strictly oriented dependency pairs: 202.20/69.78 202.20/69.78 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 202.20/69.78 202.20/69.78 202.20/69.78 Used ordering: Polynomial interpretation [POLO]: 202.20/69.78 202.20/69.78 POL(0) = 0 202.20/69.78 POL(ACTIVE(x_1)) = x_1 202.20/69.78 POL(MARK(x_1)) = 1 202.20/69.78 POL(U11(x_1)) = 0 202.20/69.78 POL(U21(x_1)) = 0 202.20/69.78 POL(U31(x_1)) = 0 202.20/69.78 POL(U41(x_1, x_2)) = 1 202.20/69.78 POL(U42(x_1)) = 0 202.20/69.78 POL(U51(x_1, x_2)) = 1 202.20/69.78 POL(U52(x_1)) = 0 202.20/69.78 POL(U61(x_1, x_2)) = 1 202.20/69.78 POL(U62(x_1)) = 0 202.20/69.78 POL(U71(x_1, x_2, x_3)) = 1 202.20/69.78 POL(U72(x_1, x_2)) = 1 202.20/69.78 POL(U81(x_1)) = 0 202.20/69.78 POL(U91(x_1, x_2, x_3, x_4)) = 1 202.20/69.78 POL(U92(x_1, x_2, x_3, x_4)) = 1 202.20/69.78 POL(U93(x_1, x_2, x_3, x_4)) = 1 202.20/69.78 POL(active(x_1)) = 0 202.20/69.78 POL(cons(x_1, x_2)) = 0 202.20/69.78 POL(isNat(x_1)) = 1 202.20/69.78 POL(isNatIList(x_1)) = 1 202.20/69.78 POL(isNatList(x_1)) = 1 202.20/69.78 POL(length(x_1)) = 1 202.20/69.78 POL(mark(x_1)) = 0 202.20/69.78 POL(nil) = 0 202.20/69.78 POL(s(x_1)) = 0 202.20/69.78 POL(take(x_1, x_2)) = 0 202.20/69.78 POL(tt) = 0 202.20/69.78 POL(zeros) = 1 202.20/69.78 202.20/69.78 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (169) 202.20/69.78 Obligation: 202.20/69.78 Q DP problem: 202.20/69.78 The TRS P consists of the following rules: 202.20/69.78 202.20/69.78 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.78 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.78 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.78 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.78 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.78 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.78 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.78 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(zeros) -> ACTIVE(zeros) 202.20/69.78 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.78 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.78 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U11(X)) -> MARK(X) 202.20/69.78 MARK(U21(X)) -> MARK(X) 202.20/69.78 MARK(U31(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.78 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U42(X)) -> MARK(X) 202.20/69.78 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.78 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.78 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.78 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.78 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U52(X)) -> MARK(X) 202.20/69.78 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.78 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.78 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.78 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.78 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U62(X)) -> MARK(X) 202.20/69.78 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.78 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.78 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.78 MARK(s(X)) -> MARK(X) 202.20/69.78 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 202.20/69.78 The TRS R consists of the following rules: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (170) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.78 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.78 202.20/69.78 Strictly oriented dependency pairs: 202.20/69.78 202.20/69.78 ACTIVE(zeros) -> MARK(cons(0, zeros)) 202.20/69.78 202.20/69.78 202.20/69.78 Used ordering: Polynomial interpretation [POLO]: 202.20/69.78 202.20/69.78 POL(0) = 0 202.20/69.78 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.78 POL(MARK(x_1)) = 2*x_1 202.20/69.78 POL(U11(x_1)) = 2*x_1 202.20/69.78 POL(U21(x_1)) = x_1 202.20/69.78 POL(U31(x_1)) = x_1 202.20/69.78 POL(U41(x_1, x_2)) = 2*x_1 202.20/69.78 POL(U42(x_1)) = x_1 202.20/69.78 POL(U51(x_1, x_2)) = 2*x_1 202.20/69.78 POL(U52(x_1)) = 2*x_1 202.20/69.78 POL(U61(x_1, x_2)) = 2*x_1 202.20/69.78 POL(U62(x_1)) = x_1 202.20/69.78 POL(U71(x_1, x_2, x_3)) = 0 202.20/69.78 POL(U72(x_1, x_2)) = 0 202.20/69.78 POL(U81(x_1)) = 0 202.20/69.78 POL(U91(x_1, x_2, x_3, x_4)) = 2*x_1 + x_4 202.20/69.78 POL(U92(x_1, x_2, x_3, x_4)) = 2*x_1 + x_4 202.20/69.78 POL(U93(x_1, x_2, x_3, x_4)) = 2*x_1 + x_4 202.20/69.78 POL(active(x_1)) = x_1 202.20/69.78 POL(cons(x_1, x_2)) = x_1 202.20/69.78 POL(isNat(x_1)) = 0 202.20/69.78 POL(isNatIList(x_1)) = 0 202.20/69.78 POL(isNatList(x_1)) = 0 202.20/69.78 POL(length(x_1)) = 0 202.20/69.78 POL(mark(x_1)) = x_1 202.20/69.78 POL(nil) = 0 202.20/69.78 POL(s(x_1)) = x_1 202.20/69.78 POL(take(x_1, x_2)) = 2 + 2*x_2 202.20/69.78 POL(tt) = 0 202.20/69.78 POL(zeros) = 2 202.20/69.78 202.20/69.78 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (171) 202.20/69.78 Obligation: 202.20/69.78 Q DP problem: 202.20/69.78 The TRS P consists of the following rules: 202.20/69.78 202.20/69.78 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.78 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.78 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.78 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.78 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.78 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.78 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.78 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(zeros) -> ACTIVE(zeros) 202.20/69.78 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.78 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U11(X)) -> MARK(X) 202.20/69.78 MARK(U21(X)) -> MARK(X) 202.20/69.78 MARK(U31(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.78 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U42(X)) -> MARK(X) 202.20/69.78 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.78 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.78 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.78 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.78 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U52(X)) -> MARK(X) 202.20/69.78 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.78 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.78 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.78 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.78 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U62(X)) -> MARK(X) 202.20/69.78 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.78 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.78 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.78 MARK(s(X)) -> MARK(X) 202.20/69.78 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 202.20/69.78 The TRS R consists of the following rules: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (172) DependencyGraphProof (EQUIVALENT) 202.20/69.78 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (173) 202.20/69.78 Obligation: 202.20/69.78 Q DP problem: 202.20/69.78 The TRS P consists of the following rules: 202.20/69.78 202.20/69.78 MARK(U42(X)) -> MARK(X) 202.20/69.78 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U11(X)) -> MARK(X) 202.20/69.78 MARK(U21(X)) -> MARK(X) 202.20/69.78 MARK(U31(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.78 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.78 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.78 MARK(U52(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.78 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.78 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.78 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.78 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.78 MARK(U62(X)) -> MARK(X) 202.20/69.78 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.78 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.78 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.78 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.78 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.78 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.78 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.78 MARK(s(X)) -> MARK(X) 202.20/69.78 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.78 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.78 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.78 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.78 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.78 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 202.20/69.78 The TRS R consists of the following rules: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (174) QDPOrderProof (EQUIVALENT) 202.20/69.78 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.78 202.20/69.78 202.20/69.78 The following pairs can be oriented strictly and are deleted. 202.20/69.78 202.20/69.78 MARK(cons(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> MARK(X1) 202.20/69.78 The remaining pairs can at least be oriented weakly. 202.20/69.78 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.78 202.20/69.78 POL( ACTIVE_1(x_1) ) = x_1 + 2 202.20/69.78 POL( U41_2(x_1, x_2) ) = 2x_1 202.20/69.78 POL( U51_2(x_1, x_2) ) = 2x_1 202.20/69.78 POL( U61_2(x_1, x_2) ) = 2x_1 202.20/69.78 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.78 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.78 POL( U91_4(x_1, ..., x_4) ) = 2x_1 + 2x_4 + 2 202.20/69.78 POL( U92_4(x_1, ..., x_4) ) = x_1 + 2x_4 + 2 202.20/69.78 POL( U93_4(x_1, ..., x_4) ) = 2x_1 + 2x_4 + 2 202.20/69.78 POL( length_1(x_1) ) = max{0, -2} 202.20/69.78 POL( mark_1(x_1) ) = x_1 202.20/69.78 POL( zeros ) = 2 202.20/69.78 POL( active_1(x_1) ) = x_1 202.20/69.78 POL( cons_2(x_1, x_2) ) = x_1 + 2 202.20/69.78 POL( 0 ) = 0 202.20/69.78 POL( tt ) = 0 202.20/69.78 POL( U42_1(x_1) ) = 2x_1 202.20/69.78 POL( isNatIList_1(x_1) ) = 0 202.20/69.78 POL( U52_1(x_1) ) = 2x_1 202.20/69.78 POL( isNatList_1(x_1) ) = 0 202.20/69.78 POL( U62_1(x_1) ) = x_1 202.20/69.78 POL( isNat_1(x_1) ) = 0 202.20/69.78 POL( s_1(x_1) ) = x_1 202.20/69.78 POL( take_2(x_1, x_2) ) = 2x_2 202.20/69.78 POL( U11_1(x_1) ) = x_1 202.20/69.78 POL( U21_1(x_1) ) = 2x_1 202.20/69.78 POL( U31_1(x_1) ) = x_1 202.20/69.78 POL( U81_1(x_1) ) = max{0, -2} 202.20/69.78 POL( nil ) = 0 202.20/69.78 POL( MARK_1(x_1) ) = x_1 + 2 202.20/69.78 202.20/69.78 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 202.20/69.78 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (175) 202.20/69.78 Obligation: 202.20/69.78 Q DP problem: 202.20/69.78 The TRS P consists of the following rules: 202.20/69.78 202.20/69.78 MARK(U42(X)) -> MARK(X) 202.20/69.78 MARK(U11(X)) -> MARK(X) 202.20/69.78 MARK(U21(X)) -> MARK(X) 202.20/69.78 MARK(U31(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.78 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.78 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.78 MARK(U52(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.78 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.78 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.78 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.78 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.78 MARK(U62(X)) -> MARK(X) 202.20/69.78 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.78 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.78 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.78 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.78 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.78 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.78 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.78 MARK(s(X)) -> MARK(X) 202.20/69.78 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.78 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U93(tt, IL, M, N)) -> MARK(cons(N, take(M, IL))) 202.20/69.78 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.78 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.78 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.78 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.78 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.78 202.20/69.78 The TRS R consists of the following rules: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (176) DependencyGraphProof (EQUIVALENT) 202.20/69.78 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (177) 202.20/69.78 Obligation: 202.20/69.78 Q DP problem: 202.20/69.78 The TRS P consists of the following rules: 202.20/69.78 202.20/69.78 MARK(U11(X)) -> MARK(X) 202.20/69.78 MARK(U21(X)) -> MARK(X) 202.20/69.78 MARK(U31(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.78 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.78 MARK(U42(X)) -> MARK(X) 202.20/69.78 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.78 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.78 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.78 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.78 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.78 MARK(U52(X)) -> MARK(X) 202.20/69.78 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.78 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.78 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.78 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.78 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.78 MARK(U62(X)) -> MARK(X) 202.20/69.78 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.78 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.78 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.78 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.78 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.78 MARK(s(X)) -> MARK(X) 202.20/69.78 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.78 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.78 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.78 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.78 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.78 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.78 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.78 202.20/69.78 The TRS R consists of the following rules: 202.20/69.78 202.20/69.78 mark(zeros) -> active(zeros) 202.20/69.78 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.78 active(zeros) -> mark(cons(0, zeros)) 202.20/69.78 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.78 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.78 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.78 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.78 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.78 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.78 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.78 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.78 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.78 mark(s(X)) -> active(s(mark(X))) 202.20/69.78 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.78 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.78 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.78 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.78 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.78 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.78 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.78 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.78 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.78 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.78 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.78 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.78 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.78 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.78 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.78 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.78 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.78 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.78 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.78 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.78 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.78 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.78 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.78 mark(0) -> active(0) 202.20/69.78 mark(tt) -> active(tt) 202.20/69.78 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.78 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.78 mark(isNat(X)) -> active(isNat(X)) 202.20/69.78 mark(length(X)) -> active(length(mark(X))) 202.20/69.78 mark(nil) -> active(nil) 202.20/69.78 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.78 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.78 take(mark(X1), X2) -> take(X1, X2) 202.20/69.78 take(active(X1), X2) -> take(X1, X2) 202.20/69.78 take(X1, active(X2)) -> take(X1, X2) 202.20/69.78 active(U11(tt)) -> mark(tt) 202.20/69.78 active(U21(tt)) -> mark(tt) 202.20/69.78 active(U31(tt)) -> mark(tt) 202.20/69.78 active(U42(tt)) -> mark(tt) 202.20/69.78 active(U52(tt)) -> mark(tt) 202.20/69.78 active(U62(tt)) -> mark(tt) 202.20/69.78 active(U81(tt)) -> mark(nil) 202.20/69.78 active(isNat(0)) -> mark(tt) 202.20/69.78 active(isNatIList(zeros)) -> mark(tt) 202.20/69.78 active(isNatList(nil)) -> mark(tt) 202.20/69.78 active(length(nil)) -> mark(0) 202.20/69.78 length(active(X)) -> length(X) 202.20/69.78 length(mark(X)) -> length(X) 202.20/69.78 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.78 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.78 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.78 U42(active(X)) -> U42(X) 202.20/69.78 U42(mark(X)) -> U42(X) 202.20/69.78 U52(active(X)) -> U52(X) 202.20/69.78 U52(mark(X)) -> U52(X) 202.20/69.78 U62(active(X)) -> U62(X) 202.20/69.78 U62(mark(X)) -> U62(X) 202.20/69.78 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.78 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.78 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.78 s(active(X)) -> s(X) 202.20/69.78 s(mark(X)) -> s(X) 202.20/69.78 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.78 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.78 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.78 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.78 U11(active(X)) -> U11(X) 202.20/69.78 U11(mark(X)) -> U11(X) 202.20/69.78 U21(active(X)) -> U21(X) 202.20/69.78 U21(mark(X)) -> U21(X) 202.20/69.78 U31(active(X)) -> U31(X) 202.20/69.78 U31(mark(X)) -> U31(X) 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.78 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.78 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.78 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.78 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.78 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.78 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.78 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.78 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.78 U81(active(X)) -> U81(X) 202.20/69.78 U81(mark(X)) -> U81(X) 202.20/69.78 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.78 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.78 202.20/69.78 The set Q consists of the following terms: 202.20/69.78 202.20/69.78 active(zeros) 202.20/69.78 active(U11(tt)) 202.20/69.78 active(U21(tt)) 202.20/69.78 active(U31(tt)) 202.20/69.78 active(U41(tt, x0)) 202.20/69.78 active(U42(tt)) 202.20/69.78 active(U51(tt, x0)) 202.20/69.78 active(U52(tt)) 202.20/69.78 active(U61(tt, x0)) 202.20/69.78 active(U62(tt)) 202.20/69.78 active(U71(tt, x0, x1)) 202.20/69.78 active(U72(tt, x0)) 202.20/69.78 active(U81(tt)) 202.20/69.78 active(U91(tt, x0, x1, x2)) 202.20/69.78 active(U92(tt, x0, x1, x2)) 202.20/69.78 active(U93(tt, x0, x1, x2)) 202.20/69.78 active(isNat(0)) 202.20/69.78 active(isNat(length(x0))) 202.20/69.78 active(isNat(s(x0))) 202.20/69.78 active(isNatIList(x0)) 202.20/69.78 active(isNatList(nil)) 202.20/69.78 active(isNatList(cons(x0, x1))) 202.20/69.78 active(isNatList(take(x0, x1))) 202.20/69.78 active(length(nil)) 202.20/69.78 active(length(cons(x0, x1))) 202.20/69.78 active(take(0, x0)) 202.20/69.78 active(take(s(x0), cons(x1, x2))) 202.20/69.78 mark(zeros) 202.20/69.78 mark(cons(x0, x1)) 202.20/69.78 mark(0) 202.20/69.78 mark(U11(x0)) 202.20/69.78 mark(tt) 202.20/69.78 mark(U21(x0)) 202.20/69.78 mark(U31(x0)) 202.20/69.78 mark(U41(x0, x1)) 202.20/69.78 mark(U42(x0)) 202.20/69.78 mark(isNatIList(x0)) 202.20/69.78 mark(U51(x0, x1)) 202.20/69.78 mark(U52(x0)) 202.20/69.78 mark(isNatList(x0)) 202.20/69.78 mark(U61(x0, x1)) 202.20/69.78 mark(U62(x0)) 202.20/69.78 mark(U71(x0, x1, x2)) 202.20/69.78 mark(U72(x0, x1)) 202.20/69.78 mark(isNat(x0)) 202.20/69.78 mark(s(x0)) 202.20/69.78 mark(length(x0)) 202.20/69.78 mark(U81(x0)) 202.20/69.78 mark(nil) 202.20/69.78 mark(U91(x0, x1, x2, x3)) 202.20/69.78 mark(U92(x0, x1, x2, x3)) 202.20/69.78 mark(U93(x0, x1, x2, x3)) 202.20/69.78 mark(take(x0, x1)) 202.20/69.78 cons(mark(x0), x1) 202.20/69.78 cons(x0, mark(x1)) 202.20/69.78 cons(active(x0), x1) 202.20/69.78 cons(x0, active(x1)) 202.20/69.78 U11(mark(x0)) 202.20/69.78 U11(active(x0)) 202.20/69.78 U21(mark(x0)) 202.20/69.78 U21(active(x0)) 202.20/69.78 U31(mark(x0)) 202.20/69.78 U31(active(x0)) 202.20/69.78 U41(mark(x0), x1) 202.20/69.78 U41(x0, mark(x1)) 202.20/69.78 U41(active(x0), x1) 202.20/69.78 U41(x0, active(x1)) 202.20/69.78 U42(mark(x0)) 202.20/69.78 U42(active(x0)) 202.20/69.78 isNatIList(mark(x0)) 202.20/69.78 isNatIList(active(x0)) 202.20/69.78 U51(mark(x0), x1) 202.20/69.78 U51(x0, mark(x1)) 202.20/69.78 U51(active(x0), x1) 202.20/69.78 U51(x0, active(x1)) 202.20/69.78 U52(mark(x0)) 202.20/69.78 U52(active(x0)) 202.20/69.78 isNatList(mark(x0)) 202.20/69.78 isNatList(active(x0)) 202.20/69.78 U61(mark(x0), x1) 202.20/69.78 U61(x0, mark(x1)) 202.20/69.78 U61(active(x0), x1) 202.20/69.78 U61(x0, active(x1)) 202.20/69.78 U62(mark(x0)) 202.20/69.78 U62(active(x0)) 202.20/69.78 U71(mark(x0), x1, x2) 202.20/69.78 U71(x0, mark(x1), x2) 202.20/69.78 U71(x0, x1, mark(x2)) 202.20/69.78 U71(active(x0), x1, x2) 202.20/69.78 U71(x0, active(x1), x2) 202.20/69.78 U71(x0, x1, active(x2)) 202.20/69.78 U72(mark(x0), x1) 202.20/69.78 U72(x0, mark(x1)) 202.20/69.78 U72(active(x0), x1) 202.20/69.78 U72(x0, active(x1)) 202.20/69.78 isNat(mark(x0)) 202.20/69.78 isNat(active(x0)) 202.20/69.78 s(mark(x0)) 202.20/69.78 s(active(x0)) 202.20/69.78 length(mark(x0)) 202.20/69.78 length(active(x0)) 202.20/69.78 U81(mark(x0)) 202.20/69.78 U81(active(x0)) 202.20/69.78 U91(mark(x0), x1, x2, x3) 202.20/69.78 U91(x0, mark(x1), x2, x3) 202.20/69.78 U91(x0, x1, mark(x2), x3) 202.20/69.78 U91(x0, x1, x2, mark(x3)) 202.20/69.78 U91(active(x0), x1, x2, x3) 202.20/69.78 U91(x0, active(x1), x2, x3) 202.20/69.78 U91(x0, x1, active(x2), x3) 202.20/69.78 U91(x0, x1, x2, active(x3)) 202.20/69.78 U92(mark(x0), x1, x2, x3) 202.20/69.78 U92(x0, mark(x1), x2, x3) 202.20/69.78 U92(x0, x1, mark(x2), x3) 202.20/69.78 U92(x0, x1, x2, mark(x3)) 202.20/69.78 U92(active(x0), x1, x2, x3) 202.20/69.78 U92(x0, active(x1), x2, x3) 202.20/69.78 U92(x0, x1, active(x2), x3) 202.20/69.78 U92(x0, x1, x2, active(x3)) 202.20/69.78 U93(mark(x0), x1, x2, x3) 202.20/69.78 U93(x0, mark(x1), x2, x3) 202.20/69.78 U93(x0, x1, mark(x2), x3) 202.20/69.78 U93(x0, x1, x2, mark(x3)) 202.20/69.78 U93(active(x0), x1, x2, x3) 202.20/69.78 U93(x0, active(x1), x2, x3) 202.20/69.78 U93(x0, x1, active(x2), x3) 202.20/69.78 U93(x0, x1, x2, active(x3)) 202.20/69.78 take(mark(x0), x1) 202.20/69.78 take(x0, mark(x1)) 202.20/69.78 take(active(x0), x1) 202.20/69.78 take(x0, active(x1)) 202.20/69.78 202.20/69.78 We have to consider all minimal (P,Q,R)-chains. 202.20/69.78 ---------------------------------------- 202.20/69.78 202.20/69.78 (178) QDPOrderProof (EQUIVALENT) 202.20/69.78 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.78 202.20/69.78 202.20/69.78 The following pairs can be oriented strictly and are deleted. 202.20/69.78 202.20/69.78 MARK(U93(X1, X2, X3, X4)) -> ACTIVE(U93(mark(X1), X2, X3, X4)) 202.20/69.78 The remaining pairs can at least be oriented weakly. 202.20/69.78 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.78 202.20/69.78 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 1} 202.20/69.78 POL( U41_2(x_1, x_2) ) = 1 202.20/69.78 POL( U51_2(x_1, x_2) ) = 1 202.20/69.78 POL( U61_2(x_1, x_2) ) = 1 202.20/69.78 POL( U71_3(x_1, ..., x_3) ) = 1 202.20/69.78 POL( U72_2(x_1, x_2) ) = 1 202.20/69.78 POL( U91_4(x_1, ..., x_4) ) = 1 202.20/69.78 POL( U92_4(x_1, ..., x_4) ) = 1 202.20/69.78 POL( U93_4(x_1, ..., x_4) ) = max{0, -2} 202.20/69.78 POL( length_1(x_1) ) = 1 202.20/69.78 POL( mark_1(x_1) ) = 2 202.20/69.78 POL( zeros ) = 0 202.20/69.78 POL( active_1(x_1) ) = max{0, -2} 202.20/69.78 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} 202.20/69.78 POL( 0 ) = 0 202.20/69.78 POL( tt ) = 0 202.20/69.78 POL( U42_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( isNatIList_1(x_1) ) = 1 202.20/69.78 POL( U52_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( isNatList_1(x_1) ) = 1 202.20/69.78 POL( U62_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( isNat_1(x_1) ) = 1 202.20/69.78 POL( s_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( take_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} 202.20/69.78 POL( U11_1(x_1) ) = max{0, -2} 202.20/69.78 POL( U21_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.78 POL( U31_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( U81_1(x_1) ) = max{0, x_1 - 2} 202.20/69.78 POL( nil ) = 0 202.20/69.78 POL( MARK_1(x_1) ) = 1 202.20/69.78 202.20/69.78 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.78 202.20/69.78 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.78 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.78 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.78 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (179) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.79 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.79 ACTIVE(U92(tt, IL, M, N)) -> MARK(U93(isNat(N), IL, M, N)) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.79 active(isNat(s(x0))) 202.20/69.79 active(isNatIList(x0)) 202.20/69.79 active(isNatList(nil)) 202.20/69.79 active(isNatList(cons(x0, x1))) 202.20/69.79 active(isNatList(take(x0, x1))) 202.20/69.79 active(length(nil)) 202.20/69.79 active(length(cons(x0, x1))) 202.20/69.79 active(take(0, x0)) 202.20/69.79 active(take(s(x0), cons(x1, x2))) 202.20/69.79 mark(zeros) 202.20/69.79 mark(cons(x0, x1)) 202.20/69.79 mark(0) 202.20/69.79 mark(U11(x0)) 202.20/69.79 mark(tt) 202.20/69.79 mark(U21(x0)) 202.20/69.79 mark(U31(x0)) 202.20/69.79 mark(U41(x0, x1)) 202.20/69.79 mark(U42(x0)) 202.20/69.79 mark(isNatIList(x0)) 202.20/69.79 mark(U51(x0, x1)) 202.20/69.79 mark(U52(x0)) 202.20/69.79 mark(isNatList(x0)) 202.20/69.79 mark(U61(x0, x1)) 202.20/69.79 mark(U62(x0)) 202.20/69.79 mark(U71(x0, x1, x2)) 202.20/69.79 mark(U72(x0, x1)) 202.20/69.79 mark(isNat(x0)) 202.20/69.79 mark(s(x0)) 202.20/69.79 mark(length(x0)) 202.20/69.79 mark(U81(x0)) 202.20/69.79 mark(nil) 202.20/69.79 mark(U91(x0, x1, x2, x3)) 202.20/69.79 mark(U92(x0, x1, x2, x3)) 202.20/69.79 mark(U93(x0, x1, x2, x3)) 202.20/69.79 mark(take(x0, x1)) 202.20/69.79 cons(mark(x0), x1) 202.20/69.79 cons(x0, mark(x1)) 202.20/69.79 cons(active(x0), x1) 202.20/69.79 cons(x0, active(x1)) 202.20/69.79 U11(mark(x0)) 202.20/69.79 U11(active(x0)) 202.20/69.79 U21(mark(x0)) 202.20/69.79 U21(active(x0)) 202.20/69.79 U31(mark(x0)) 202.20/69.79 U31(active(x0)) 202.20/69.79 U41(mark(x0), x1) 202.20/69.79 U41(x0, mark(x1)) 202.20/69.79 U41(active(x0), x1) 202.20/69.79 U41(x0, active(x1)) 202.20/69.79 U42(mark(x0)) 202.20/69.79 U42(active(x0)) 202.20/69.79 isNatIList(mark(x0)) 202.20/69.79 isNatIList(active(x0)) 202.20/69.79 U51(mark(x0), x1) 202.20/69.79 U51(x0, mark(x1)) 202.20/69.79 U51(active(x0), x1) 202.20/69.79 U51(x0, active(x1)) 202.20/69.79 U52(mark(x0)) 202.20/69.79 U52(active(x0)) 202.20/69.79 isNatList(mark(x0)) 202.20/69.79 isNatList(active(x0)) 202.20/69.79 U61(mark(x0), x1) 202.20/69.79 U61(x0, mark(x1)) 202.20/69.79 U61(active(x0), x1) 202.20/69.79 U61(x0, active(x1)) 202.20/69.79 U62(mark(x0)) 202.20/69.79 U62(active(x0)) 202.20/69.79 U71(mark(x0), x1, x2) 202.20/69.79 U71(x0, mark(x1), x2) 202.20/69.79 U71(x0, x1, mark(x2)) 202.20/69.79 U71(active(x0), x1, x2) 202.20/69.79 U71(x0, active(x1), x2) 202.20/69.79 U71(x0, x1, active(x2)) 202.20/69.79 U72(mark(x0), x1) 202.20/69.79 U72(x0, mark(x1)) 202.20/69.79 U72(active(x0), x1) 202.20/69.79 U72(x0, active(x1)) 202.20/69.79 isNat(mark(x0)) 202.20/69.79 isNat(active(x0)) 202.20/69.79 s(mark(x0)) 202.20/69.79 s(active(x0)) 202.20/69.79 length(mark(x0)) 202.20/69.79 length(active(x0)) 202.20/69.79 U81(mark(x0)) 202.20/69.79 U81(active(x0)) 202.20/69.79 U91(mark(x0), x1, x2, x3) 202.20/69.79 U91(x0, mark(x1), x2, x3) 202.20/69.79 U91(x0, x1, mark(x2), x3) 202.20/69.79 U91(x0, x1, x2, mark(x3)) 202.20/69.79 U91(active(x0), x1, x2, x3) 202.20/69.79 U91(x0, active(x1), x2, x3) 202.20/69.79 U91(x0, x1, active(x2), x3) 202.20/69.79 U91(x0, x1, x2, active(x3)) 202.20/69.79 U92(mark(x0), x1, x2, x3) 202.20/69.79 U92(x0, mark(x1), x2, x3) 202.20/69.79 U92(x0, x1, mark(x2), x3) 202.20/69.79 U92(x0, x1, x2, mark(x3)) 202.20/69.79 U92(active(x0), x1, x2, x3) 202.20/69.79 U92(x0, active(x1), x2, x3) 202.20/69.79 U92(x0, x1, active(x2), x3) 202.20/69.79 U92(x0, x1, x2, active(x3)) 202.20/69.79 U93(mark(x0), x1, x2, x3) 202.20/69.79 U93(x0, mark(x1), x2, x3) 202.20/69.79 U93(x0, x1, mark(x2), x3) 202.20/69.79 U93(x0, x1, x2, mark(x3)) 202.20/69.79 U93(active(x0), x1, x2, x3) 202.20/69.79 U93(x0, active(x1), x2, x3) 202.20/69.79 U93(x0, x1, active(x2), x3) 202.20/69.79 U93(x0, x1, x2, active(x3)) 202.20/69.79 take(mark(x0), x1) 202.20/69.79 take(x0, mark(x1)) 202.20/69.79 take(active(x0), x1) 202.20/69.79 take(x0, active(x1)) 202.20/69.79 202.20/69.79 We have to consider all minimal (P,Q,R)-chains. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (180) DependencyGraphProof (EQUIVALENT) 202.20/69.79 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (181) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.79 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.79 active(isNat(s(x0))) 202.20/69.79 active(isNatIList(x0)) 202.20/69.79 active(isNatList(nil)) 202.20/69.79 active(isNatList(cons(x0, x1))) 202.20/69.79 active(isNatList(take(x0, x1))) 202.20/69.79 active(length(nil)) 202.20/69.79 active(length(cons(x0, x1))) 202.20/69.79 active(take(0, x0)) 202.20/69.79 active(take(s(x0), cons(x1, x2))) 202.20/69.79 mark(zeros) 202.20/69.79 mark(cons(x0, x1)) 202.20/69.79 mark(0) 202.20/69.79 mark(U11(x0)) 202.20/69.79 mark(tt) 202.20/69.79 mark(U21(x0)) 202.20/69.79 mark(U31(x0)) 202.20/69.79 mark(U41(x0, x1)) 202.20/69.79 mark(U42(x0)) 202.20/69.79 mark(isNatIList(x0)) 202.20/69.79 mark(U51(x0, x1)) 202.20/69.79 mark(U52(x0)) 202.20/69.79 mark(isNatList(x0)) 202.20/69.79 mark(U61(x0, x1)) 202.20/69.79 mark(U62(x0)) 202.20/69.79 mark(U71(x0, x1, x2)) 202.20/69.79 mark(U72(x0, x1)) 202.20/69.79 mark(isNat(x0)) 202.20/69.79 mark(s(x0)) 202.20/69.79 mark(length(x0)) 202.20/69.79 mark(U81(x0)) 202.20/69.79 mark(nil) 202.20/69.79 mark(U91(x0, x1, x2, x3)) 202.20/69.79 mark(U92(x0, x1, x2, x3)) 202.20/69.79 mark(U93(x0, x1, x2, x3)) 202.20/69.79 mark(take(x0, x1)) 202.20/69.79 cons(mark(x0), x1) 202.20/69.79 cons(x0, mark(x1)) 202.20/69.79 cons(active(x0), x1) 202.20/69.79 cons(x0, active(x1)) 202.20/69.79 U11(mark(x0)) 202.20/69.79 U11(active(x0)) 202.20/69.79 U21(mark(x0)) 202.20/69.79 U21(active(x0)) 202.20/69.79 U31(mark(x0)) 202.20/69.79 U31(active(x0)) 202.20/69.79 U41(mark(x0), x1) 202.20/69.79 U41(x0, mark(x1)) 202.20/69.79 U41(active(x0), x1) 202.20/69.79 U41(x0, active(x1)) 202.20/69.79 U42(mark(x0)) 202.20/69.79 U42(active(x0)) 202.20/69.79 isNatIList(mark(x0)) 202.20/69.79 isNatIList(active(x0)) 202.20/69.79 U51(mark(x0), x1) 202.20/69.79 U51(x0, mark(x1)) 202.20/69.79 U51(active(x0), x1) 202.20/69.79 U51(x0, active(x1)) 202.20/69.79 U52(mark(x0)) 202.20/69.79 U52(active(x0)) 202.20/69.79 isNatList(mark(x0)) 202.20/69.79 isNatList(active(x0)) 202.20/69.79 U61(mark(x0), x1) 202.20/69.79 U61(x0, mark(x1)) 202.20/69.79 U61(active(x0), x1) 202.20/69.79 U61(x0, active(x1)) 202.20/69.79 U62(mark(x0)) 202.20/69.79 U62(active(x0)) 202.20/69.79 U71(mark(x0), x1, x2) 202.20/69.79 U71(x0, mark(x1), x2) 202.20/69.79 U71(x0, x1, mark(x2)) 202.20/69.79 U71(active(x0), x1, x2) 202.20/69.79 U71(x0, active(x1), x2) 202.20/69.79 U71(x0, x1, active(x2)) 202.20/69.79 U72(mark(x0), x1) 202.20/69.79 U72(x0, mark(x1)) 202.20/69.79 U72(active(x0), x1) 202.20/69.79 U72(x0, active(x1)) 202.20/69.79 isNat(mark(x0)) 202.20/69.79 isNat(active(x0)) 202.20/69.79 s(mark(x0)) 202.20/69.79 s(active(x0)) 202.20/69.79 length(mark(x0)) 202.20/69.79 length(active(x0)) 202.20/69.79 U81(mark(x0)) 202.20/69.79 U81(active(x0)) 202.20/69.79 U91(mark(x0), x1, x2, x3) 202.20/69.79 U91(x0, mark(x1), x2, x3) 202.20/69.79 U91(x0, x1, mark(x2), x3) 202.20/69.79 U91(x0, x1, x2, mark(x3)) 202.20/69.79 U91(active(x0), x1, x2, x3) 202.20/69.79 U91(x0, active(x1), x2, x3) 202.20/69.79 U91(x0, x1, active(x2), x3) 202.20/69.79 U91(x0, x1, x2, active(x3)) 202.20/69.79 U92(mark(x0), x1, x2, x3) 202.20/69.79 U92(x0, mark(x1), x2, x3) 202.20/69.79 U92(x0, x1, mark(x2), x3) 202.20/69.79 U92(x0, x1, x2, mark(x3)) 202.20/69.79 U92(active(x0), x1, x2, x3) 202.20/69.79 U92(x0, active(x1), x2, x3) 202.20/69.79 U92(x0, x1, active(x2), x3) 202.20/69.79 U92(x0, x1, x2, active(x3)) 202.20/69.79 U93(mark(x0), x1, x2, x3) 202.20/69.79 U93(x0, mark(x1), x2, x3) 202.20/69.79 U93(x0, x1, mark(x2), x3) 202.20/69.79 U93(x0, x1, x2, mark(x3)) 202.20/69.79 U93(active(x0), x1, x2, x3) 202.20/69.79 U93(x0, active(x1), x2, x3) 202.20/69.79 U93(x0, x1, active(x2), x3) 202.20/69.79 U93(x0, x1, x2, active(x3)) 202.20/69.79 take(mark(x0), x1) 202.20/69.79 take(x0, mark(x1)) 202.20/69.79 take(active(x0), x1) 202.20/69.79 take(x0, active(x1)) 202.20/69.79 202.20/69.79 We have to consider all minimal (P,Q,R)-chains. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (182) QDPOrderProof (EQUIVALENT) 202.20/69.79 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.79 202.20/69.79 202.20/69.79 The following pairs can be oriented strictly and are deleted. 202.20/69.79 202.20/69.79 MARK(U92(X1, X2, X3, X4)) -> ACTIVE(U92(mark(X1), X2, X3, X4)) 202.20/69.79 The remaining pairs can at least be oriented weakly. 202.20/69.79 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.79 202.20/69.79 POL( ACTIVE_1(x_1) ) = x_1 202.20/69.79 POL( U41_2(x_1, x_2) ) = 2 202.20/69.79 POL( U51_2(x_1, x_2) ) = 2 202.20/69.79 POL( U61_2(x_1, x_2) ) = 2 202.20/69.79 POL( U71_3(x_1, ..., x_3) ) = 2 202.20/69.79 POL( U72_2(x_1, x_2) ) = 2 202.20/69.79 POL( U91_4(x_1, ..., x_4) ) = 2 202.20/69.79 POL( U92_4(x_1, ..., x_4) ) = max{0, -2} 202.20/69.79 POL( length_1(x_1) ) = 2 202.20/69.79 POL( mark_1(x_1) ) = 2 202.20/69.79 POL( zeros ) = 0 202.20/69.79 POL( active_1(x_1) ) = 2 202.20/69.79 POL( cons_2(x_1, x_2) ) = 2 202.20/69.79 POL( 0 ) = 0 202.20/69.79 POL( tt ) = 0 202.20/69.79 POL( U42_1(x_1) ) = max{0, x_1 - 2} 202.20/69.79 POL( isNatIList_1(x_1) ) = 2 202.20/69.79 POL( U52_1(x_1) ) = max{0, x_1 - 2} 202.20/69.79 POL( isNatList_1(x_1) ) = 2 202.20/69.79 POL( U62_1(x_1) ) = max{0, -2} 202.20/69.79 POL( isNat_1(x_1) ) = 2 202.20/69.79 POL( s_1(x_1) ) = max{0, -2} 202.20/69.79 POL( U93_4(x_1, ..., x_4) ) = max{0, 2x_2 - 2} 202.20/69.79 POL( take_2(x_1, x_2) ) = 2 202.20/69.79 POL( U11_1(x_1) ) = max{0, -2} 202.20/69.79 POL( U21_1(x_1) ) = max{0, -2} 202.20/69.79 POL( U31_1(x_1) ) = max{0, -2} 202.20/69.79 POL( U81_1(x_1) ) = max{0, -2} 202.20/69.79 POL( nil ) = 0 202.20/69.79 POL( MARK_1(x_1) ) = 2 202.20/69.79 202.20/69.79 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.79 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (183) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(U91(tt, IL, M, N)) -> MARK(U92(isNat(M), IL, M, N)) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.79 active(isNat(s(x0))) 202.20/69.79 active(isNatIList(x0)) 202.20/69.79 active(isNatList(nil)) 202.20/69.79 active(isNatList(cons(x0, x1))) 202.20/69.79 active(isNatList(take(x0, x1))) 202.20/69.79 active(length(nil)) 202.20/69.79 active(length(cons(x0, x1))) 202.20/69.79 active(take(0, x0)) 202.20/69.79 active(take(s(x0), cons(x1, x2))) 202.20/69.79 mark(zeros) 202.20/69.79 mark(cons(x0, x1)) 202.20/69.79 mark(0) 202.20/69.79 mark(U11(x0)) 202.20/69.79 mark(tt) 202.20/69.79 mark(U21(x0)) 202.20/69.79 mark(U31(x0)) 202.20/69.79 mark(U41(x0, x1)) 202.20/69.79 mark(U42(x0)) 202.20/69.79 mark(isNatIList(x0)) 202.20/69.79 mark(U51(x0, x1)) 202.20/69.79 mark(U52(x0)) 202.20/69.79 mark(isNatList(x0)) 202.20/69.79 mark(U61(x0, x1)) 202.20/69.79 mark(U62(x0)) 202.20/69.79 mark(U71(x0, x1, x2)) 202.20/69.79 mark(U72(x0, x1)) 202.20/69.79 mark(isNat(x0)) 202.20/69.79 mark(s(x0)) 202.20/69.79 mark(length(x0)) 202.20/69.79 mark(U81(x0)) 202.20/69.79 mark(nil) 202.20/69.79 mark(U91(x0, x1, x2, x3)) 202.20/69.79 mark(U92(x0, x1, x2, x3)) 202.20/69.79 mark(U93(x0, x1, x2, x3)) 202.20/69.79 mark(take(x0, x1)) 202.20/69.79 cons(mark(x0), x1) 202.20/69.79 cons(x0, mark(x1)) 202.20/69.79 cons(active(x0), x1) 202.20/69.79 cons(x0, active(x1)) 202.20/69.79 U11(mark(x0)) 202.20/69.79 U11(active(x0)) 202.20/69.79 U21(mark(x0)) 202.20/69.79 U21(active(x0)) 202.20/69.79 U31(mark(x0)) 202.20/69.79 U31(active(x0)) 202.20/69.79 U41(mark(x0), x1) 202.20/69.79 U41(x0, mark(x1)) 202.20/69.79 U41(active(x0), x1) 202.20/69.79 U41(x0, active(x1)) 202.20/69.79 U42(mark(x0)) 202.20/69.79 U42(active(x0)) 202.20/69.79 isNatIList(mark(x0)) 202.20/69.79 isNatIList(active(x0)) 202.20/69.79 U51(mark(x0), x1) 202.20/69.79 U51(x0, mark(x1)) 202.20/69.79 U51(active(x0), x1) 202.20/69.79 U51(x0, active(x1)) 202.20/69.79 U52(mark(x0)) 202.20/69.79 U52(active(x0)) 202.20/69.79 isNatList(mark(x0)) 202.20/69.79 isNatList(active(x0)) 202.20/69.79 U61(mark(x0), x1) 202.20/69.79 U61(x0, mark(x1)) 202.20/69.79 U61(active(x0), x1) 202.20/69.79 U61(x0, active(x1)) 202.20/69.79 U62(mark(x0)) 202.20/69.79 U62(active(x0)) 202.20/69.79 U71(mark(x0), x1, x2) 202.20/69.79 U71(x0, mark(x1), x2) 202.20/69.79 U71(x0, x1, mark(x2)) 202.20/69.79 U71(active(x0), x1, x2) 202.20/69.79 U71(x0, active(x1), x2) 202.20/69.79 U71(x0, x1, active(x2)) 202.20/69.79 U72(mark(x0), x1) 202.20/69.79 U72(x0, mark(x1)) 202.20/69.79 U72(active(x0), x1) 202.20/69.79 U72(x0, active(x1)) 202.20/69.79 isNat(mark(x0)) 202.20/69.79 isNat(active(x0)) 202.20/69.79 s(mark(x0)) 202.20/69.79 s(active(x0)) 202.20/69.79 length(mark(x0)) 202.20/69.79 length(active(x0)) 202.20/69.79 U81(mark(x0)) 202.20/69.79 U81(active(x0)) 202.20/69.79 U91(mark(x0), x1, x2, x3) 202.20/69.79 U91(x0, mark(x1), x2, x3) 202.20/69.79 U91(x0, x1, mark(x2), x3) 202.20/69.79 U91(x0, x1, x2, mark(x3)) 202.20/69.79 U91(active(x0), x1, x2, x3) 202.20/69.79 U91(x0, active(x1), x2, x3) 202.20/69.79 U91(x0, x1, active(x2), x3) 202.20/69.79 U91(x0, x1, x2, active(x3)) 202.20/69.79 U92(mark(x0), x1, x2, x3) 202.20/69.79 U92(x0, mark(x1), x2, x3) 202.20/69.79 U92(x0, x1, mark(x2), x3) 202.20/69.79 U92(x0, x1, x2, mark(x3)) 202.20/69.79 U92(active(x0), x1, x2, x3) 202.20/69.79 U92(x0, active(x1), x2, x3) 202.20/69.79 U92(x0, x1, active(x2), x3) 202.20/69.79 U92(x0, x1, x2, active(x3)) 202.20/69.79 U93(mark(x0), x1, x2, x3) 202.20/69.79 U93(x0, mark(x1), x2, x3) 202.20/69.79 U93(x0, x1, mark(x2), x3) 202.20/69.79 U93(x0, x1, x2, mark(x3)) 202.20/69.79 U93(active(x0), x1, x2, x3) 202.20/69.79 U93(x0, active(x1), x2, x3) 202.20/69.79 U93(x0, x1, active(x2), x3) 202.20/69.79 U93(x0, x1, x2, active(x3)) 202.20/69.79 take(mark(x0), x1) 202.20/69.79 take(x0, mark(x1)) 202.20/69.79 take(active(x0), x1) 202.20/69.79 take(x0, active(x1)) 202.20/69.79 202.20/69.79 We have to consider all minimal (P,Q,R)-chains. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (184) DependencyGraphProof (EQUIVALENT) 202.20/69.79 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (185) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.79 active(isNat(s(x0))) 202.20/69.79 active(isNatIList(x0)) 202.20/69.79 active(isNatList(nil)) 202.20/69.79 active(isNatList(cons(x0, x1))) 202.20/69.79 active(isNatList(take(x0, x1))) 202.20/69.79 active(length(nil)) 202.20/69.79 active(length(cons(x0, x1))) 202.20/69.79 active(take(0, x0)) 202.20/69.79 active(take(s(x0), cons(x1, x2))) 202.20/69.79 mark(zeros) 202.20/69.79 mark(cons(x0, x1)) 202.20/69.79 mark(0) 202.20/69.79 mark(U11(x0)) 202.20/69.79 mark(tt) 202.20/69.79 mark(U21(x0)) 202.20/69.79 mark(U31(x0)) 202.20/69.79 mark(U41(x0, x1)) 202.20/69.79 mark(U42(x0)) 202.20/69.79 mark(isNatIList(x0)) 202.20/69.79 mark(U51(x0, x1)) 202.20/69.79 mark(U52(x0)) 202.20/69.79 mark(isNatList(x0)) 202.20/69.79 mark(U61(x0, x1)) 202.20/69.79 mark(U62(x0)) 202.20/69.79 mark(U71(x0, x1, x2)) 202.20/69.79 mark(U72(x0, x1)) 202.20/69.79 mark(isNat(x0)) 202.20/69.79 mark(s(x0)) 202.20/69.79 mark(length(x0)) 202.20/69.79 mark(U81(x0)) 202.20/69.79 mark(nil) 202.20/69.79 mark(U91(x0, x1, x2, x3)) 202.20/69.79 mark(U92(x0, x1, x2, x3)) 202.20/69.79 mark(U93(x0, x1, x2, x3)) 202.20/69.79 mark(take(x0, x1)) 202.20/69.79 cons(mark(x0), x1) 202.20/69.79 cons(x0, mark(x1)) 202.20/69.79 cons(active(x0), x1) 202.20/69.79 cons(x0, active(x1)) 202.20/69.79 U11(mark(x0)) 202.20/69.79 U11(active(x0)) 202.20/69.79 U21(mark(x0)) 202.20/69.79 U21(active(x0)) 202.20/69.79 U31(mark(x0)) 202.20/69.79 U31(active(x0)) 202.20/69.79 U41(mark(x0), x1) 202.20/69.79 U41(x0, mark(x1)) 202.20/69.79 U41(active(x0), x1) 202.20/69.79 U41(x0, active(x1)) 202.20/69.79 U42(mark(x0)) 202.20/69.79 U42(active(x0)) 202.20/69.79 isNatIList(mark(x0)) 202.20/69.79 isNatIList(active(x0)) 202.20/69.79 U51(mark(x0), x1) 202.20/69.79 U51(x0, mark(x1)) 202.20/69.79 U51(active(x0), x1) 202.20/69.79 U51(x0, active(x1)) 202.20/69.79 U52(mark(x0)) 202.20/69.79 U52(active(x0)) 202.20/69.79 isNatList(mark(x0)) 202.20/69.79 isNatList(active(x0)) 202.20/69.79 U61(mark(x0), x1) 202.20/69.79 U61(x0, mark(x1)) 202.20/69.79 U61(active(x0), x1) 202.20/69.79 U61(x0, active(x1)) 202.20/69.79 U62(mark(x0)) 202.20/69.79 U62(active(x0)) 202.20/69.79 U71(mark(x0), x1, x2) 202.20/69.79 U71(x0, mark(x1), x2) 202.20/69.79 U71(x0, x1, mark(x2)) 202.20/69.79 U71(active(x0), x1, x2) 202.20/69.79 U71(x0, active(x1), x2) 202.20/69.79 U71(x0, x1, active(x2)) 202.20/69.79 U72(mark(x0), x1) 202.20/69.79 U72(x0, mark(x1)) 202.20/69.79 U72(active(x0), x1) 202.20/69.79 U72(x0, active(x1)) 202.20/69.79 isNat(mark(x0)) 202.20/69.79 isNat(active(x0)) 202.20/69.79 s(mark(x0)) 202.20/69.79 s(active(x0)) 202.20/69.79 length(mark(x0)) 202.20/69.79 length(active(x0)) 202.20/69.79 U81(mark(x0)) 202.20/69.79 U81(active(x0)) 202.20/69.79 U91(mark(x0), x1, x2, x3) 202.20/69.79 U91(x0, mark(x1), x2, x3) 202.20/69.79 U91(x0, x1, mark(x2), x3) 202.20/69.79 U91(x0, x1, x2, mark(x3)) 202.20/69.79 U91(active(x0), x1, x2, x3) 202.20/69.79 U91(x0, active(x1), x2, x3) 202.20/69.79 U91(x0, x1, active(x2), x3) 202.20/69.79 U91(x0, x1, x2, active(x3)) 202.20/69.79 U92(mark(x0), x1, x2, x3) 202.20/69.79 U92(x0, mark(x1), x2, x3) 202.20/69.79 U92(x0, x1, mark(x2), x3) 202.20/69.79 U92(x0, x1, x2, mark(x3)) 202.20/69.79 U92(active(x0), x1, x2, x3) 202.20/69.79 U92(x0, active(x1), x2, x3) 202.20/69.79 U92(x0, x1, active(x2), x3) 202.20/69.79 U92(x0, x1, x2, active(x3)) 202.20/69.79 U93(mark(x0), x1, x2, x3) 202.20/69.79 U93(x0, mark(x1), x2, x3) 202.20/69.79 U93(x0, x1, mark(x2), x3) 202.20/69.79 U93(x0, x1, x2, mark(x3)) 202.20/69.79 U93(active(x0), x1, x2, x3) 202.20/69.79 U93(x0, active(x1), x2, x3) 202.20/69.79 U93(x0, x1, active(x2), x3) 202.20/69.79 U93(x0, x1, x2, active(x3)) 202.20/69.79 take(mark(x0), x1) 202.20/69.79 take(x0, mark(x1)) 202.20/69.79 take(active(x0), x1) 202.20/69.79 take(x0, active(x1)) 202.20/69.79 202.20/69.79 We have to consider all minimal (P,Q,R)-chains. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (186) QDPOrderProof (EQUIVALENT) 202.20/69.79 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.79 202.20/69.79 202.20/69.79 The following pairs can be oriented strictly and are deleted. 202.20/69.79 202.20/69.79 MARK(U91(X1, X2, X3, X4)) -> ACTIVE(U91(mark(X1), X2, X3, X4)) 202.20/69.79 The remaining pairs can at least be oriented weakly. 202.20/69.79 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.79 202.20/69.79 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.20/69.79 POL( U41_2(x_1, x_2) ) = x_1 + 1 202.20/69.79 POL( U51_2(x_1, x_2) ) = x_1 + 1 202.20/69.79 POL( U61_2(x_1, x_2) ) = x_1 + 1 202.20/69.79 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.79 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.79 POL( U91_4(x_1, ..., x_4) ) = 2 202.20/69.79 POL( length_1(x_1) ) = 0 202.20/69.79 POL( mark_1(x_1) ) = 2x_1 + 2 202.20/69.79 POL( zeros ) = 0 202.20/69.79 POL( active_1(x_1) ) = 2 202.20/69.79 POL( cons_2(x_1, x_2) ) = 2x_1 + 2 202.20/69.79 POL( 0 ) = 0 202.20/69.79 POL( tt ) = 0 202.20/69.79 POL( U42_1(x_1) ) = 2x_1 + 1 202.20/69.79 POL( isNatIList_1(x_1) ) = 0 202.20/69.79 POL( U52_1(x_1) ) = x_1 + 1 202.20/69.79 POL( isNatList_1(x_1) ) = 0 202.20/69.79 POL( U62_1(x_1) ) = x_1 + 1 202.20/69.79 POL( isNat_1(x_1) ) = 0 202.20/69.79 POL( s_1(x_1) ) = 2x_1 + 1 202.20/69.79 POL( U92_4(x_1, ..., x_4) ) = 2 202.20/69.79 POL( U93_4(x_1, ..., x_4) ) = 2 202.20/69.79 POL( take_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} 202.20/69.79 POL( U11_1(x_1) ) = 2x_1 + 1 202.20/69.79 POL( U21_1(x_1) ) = x_1 + 1 202.20/69.79 POL( U31_1(x_1) ) = x_1 + 1 202.20/69.79 POL( U81_1(x_1) ) = x_1 + 1 202.20/69.79 POL( nil ) = 0 202.20/69.79 POL( MARK_1(x_1) ) = max{0, x_1 - 1} 202.20/69.79 202.20/69.79 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.79 none 202.20/69.79 202.20/69.79 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (187) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.79 active(isNat(s(x0))) 202.20/69.79 active(isNatIList(x0)) 202.20/69.79 active(isNatList(nil)) 202.20/69.79 active(isNatList(cons(x0, x1))) 202.20/69.79 active(isNatList(take(x0, x1))) 202.20/69.79 active(length(nil)) 202.20/69.79 active(length(cons(x0, x1))) 202.20/69.79 active(take(0, x0)) 202.20/69.79 active(take(s(x0), cons(x1, x2))) 202.20/69.79 mark(zeros) 202.20/69.79 mark(cons(x0, x1)) 202.20/69.79 mark(0) 202.20/69.79 mark(U11(x0)) 202.20/69.79 mark(tt) 202.20/69.79 mark(U21(x0)) 202.20/69.79 mark(U31(x0)) 202.20/69.79 mark(U41(x0, x1)) 202.20/69.79 mark(U42(x0)) 202.20/69.79 mark(isNatIList(x0)) 202.20/69.79 mark(U51(x0, x1)) 202.20/69.79 mark(U52(x0)) 202.20/69.79 mark(isNatList(x0)) 202.20/69.79 mark(U61(x0, x1)) 202.20/69.79 mark(U62(x0)) 202.20/69.79 mark(U71(x0, x1, x2)) 202.20/69.79 mark(U72(x0, x1)) 202.20/69.79 mark(isNat(x0)) 202.20/69.79 mark(s(x0)) 202.20/69.79 mark(length(x0)) 202.20/69.79 mark(U81(x0)) 202.20/69.79 mark(nil) 202.20/69.79 mark(U91(x0, x1, x2, x3)) 202.20/69.79 mark(U92(x0, x1, x2, x3)) 202.20/69.79 mark(U93(x0, x1, x2, x3)) 202.20/69.79 mark(take(x0, x1)) 202.20/69.79 cons(mark(x0), x1) 202.20/69.79 cons(x0, mark(x1)) 202.20/69.79 cons(active(x0), x1) 202.20/69.79 cons(x0, active(x1)) 202.20/69.79 U11(mark(x0)) 202.20/69.79 U11(active(x0)) 202.20/69.79 U21(mark(x0)) 202.20/69.79 U21(active(x0)) 202.20/69.79 U31(mark(x0)) 202.20/69.79 U31(active(x0)) 202.20/69.79 U41(mark(x0), x1) 202.20/69.79 U41(x0, mark(x1)) 202.20/69.79 U41(active(x0), x1) 202.20/69.79 U41(x0, active(x1)) 202.20/69.79 U42(mark(x0)) 202.20/69.79 U42(active(x0)) 202.20/69.79 isNatIList(mark(x0)) 202.20/69.79 isNatIList(active(x0)) 202.20/69.79 U51(mark(x0), x1) 202.20/69.79 U51(x0, mark(x1)) 202.20/69.79 U51(active(x0), x1) 202.20/69.79 U51(x0, active(x1)) 202.20/69.79 U52(mark(x0)) 202.20/69.79 U52(active(x0)) 202.20/69.79 isNatList(mark(x0)) 202.20/69.79 isNatList(active(x0)) 202.20/69.79 U61(mark(x0), x1) 202.20/69.79 U61(x0, mark(x1)) 202.20/69.79 U61(active(x0), x1) 202.20/69.79 U61(x0, active(x1)) 202.20/69.79 U62(mark(x0)) 202.20/69.79 U62(active(x0)) 202.20/69.79 U71(mark(x0), x1, x2) 202.20/69.79 U71(x0, mark(x1), x2) 202.20/69.79 U71(x0, x1, mark(x2)) 202.20/69.79 U71(active(x0), x1, x2) 202.20/69.79 U71(x0, active(x1), x2) 202.20/69.79 U71(x0, x1, active(x2)) 202.20/69.79 U72(mark(x0), x1) 202.20/69.79 U72(x0, mark(x1)) 202.20/69.79 U72(active(x0), x1) 202.20/69.79 U72(x0, active(x1)) 202.20/69.79 isNat(mark(x0)) 202.20/69.79 isNat(active(x0)) 202.20/69.79 s(mark(x0)) 202.20/69.79 s(active(x0)) 202.20/69.79 length(mark(x0)) 202.20/69.79 length(active(x0)) 202.20/69.79 U81(mark(x0)) 202.20/69.79 U81(active(x0)) 202.20/69.79 U91(mark(x0), x1, x2, x3) 202.20/69.79 U91(x0, mark(x1), x2, x3) 202.20/69.79 U91(x0, x1, mark(x2), x3) 202.20/69.79 U91(x0, x1, x2, mark(x3)) 202.20/69.79 U91(active(x0), x1, x2, x3) 202.20/69.79 U91(x0, active(x1), x2, x3) 202.20/69.79 U91(x0, x1, active(x2), x3) 202.20/69.79 U91(x0, x1, x2, active(x3)) 202.20/69.79 U92(mark(x0), x1, x2, x3) 202.20/69.79 U92(x0, mark(x1), x2, x3) 202.20/69.79 U92(x0, x1, mark(x2), x3) 202.20/69.79 U92(x0, x1, x2, mark(x3)) 202.20/69.79 U92(active(x0), x1, x2, x3) 202.20/69.79 U92(x0, active(x1), x2, x3) 202.20/69.79 U92(x0, x1, active(x2), x3) 202.20/69.79 U92(x0, x1, x2, active(x3)) 202.20/69.79 U93(mark(x0), x1, x2, x3) 202.20/69.79 U93(x0, mark(x1), x2, x3) 202.20/69.79 U93(x0, x1, mark(x2), x3) 202.20/69.79 U93(x0, x1, x2, mark(x3)) 202.20/69.79 U93(active(x0), x1, x2, x3) 202.20/69.79 U93(x0, active(x1), x2, x3) 202.20/69.79 U93(x0, x1, active(x2), x3) 202.20/69.79 U93(x0, x1, x2, active(x3)) 202.20/69.79 take(mark(x0), x1) 202.20/69.79 take(x0, mark(x1)) 202.20/69.79 take(active(x0), x1) 202.20/69.79 take(x0, active(x1)) 202.20/69.79 202.20/69.79 We have to consider all minimal (P,Q,R)-chains. 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (188) QDPOrderProof (EQUIVALENT) 202.20/69.79 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.79 202.20/69.79 202.20/69.79 The following pairs can be oriented strictly and are deleted. 202.20/69.79 202.20/69.79 MARK(U11(X)) -> MARK(X) 202.20/69.79 MARK(U31(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(U61(X1, X2)) -> MARK(X1) 202.20/69.79 ACTIVE(isNat(length(V1))) -> MARK(U11(isNatList(V1))) 202.20/69.79 The remaining pairs can at least be oriented weakly. 202.20/69.79 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.79 202.20/69.79 POL( ACTIVE_1(x_1) ) = x_1 202.20/69.79 POL( U41_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 202.20/69.79 POL( U51_2(x_1, x_2) ) = x_1 + x_2 202.20/69.79 POL( U61_2(x_1, x_2) ) = x_1 + 2x_2 + 2 202.20/69.79 POL( U71_3(x_1, ..., x_3) ) = 2x_2 + x_3 + 2 202.20/69.79 POL( U72_2(x_1, x_2) ) = 2x_2 + 2 202.20/69.79 POL( length_1(x_1) ) = 2x_1 + 2 202.20/69.79 POL( mark_1(x_1) ) = x_1 202.20/69.79 POL( zeros ) = 0 202.20/69.79 POL( active_1(x_1) ) = x_1 202.20/69.79 POL( cons_2(x_1, x_2) ) = 2x_1 + x_2 202.20/69.79 POL( 0 ) = 0 202.20/69.79 POL( tt ) = 0 202.20/69.79 POL( U42_1(x_1) ) = x_1 202.20/69.79 POL( isNatIList_1(x_1) ) = 2x_1 + 2 202.20/69.79 POL( U52_1(x_1) ) = x_1 202.20/69.79 POL( isNatList_1(x_1) ) = x_1 202.20/69.79 POL( U62_1(x_1) ) = x_1 202.20/69.79 POL( isNat_1(x_1) ) = 2x_1 202.20/69.79 POL( s_1(x_1) ) = x_1 202.20/69.79 POL( U91_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + 2x_4 + 2 202.20/69.79 POL( U92_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + 2x_4 + 2 202.20/69.79 POL( U93_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + 2x_4 + 2 202.20/69.79 POL( take_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 202.20/69.79 POL( U11_1(x_1) ) = x_1 + 2 202.20/69.79 POL( U21_1(x_1) ) = x_1 202.20/69.79 POL( U31_1(x_1) ) = 2x_1 + 2 202.20/69.79 POL( U81_1(x_1) ) = max{0, -2} 202.20/69.79 POL( nil ) = 0 202.20/69.79 POL( MARK_1(x_1) ) = x_1 202.20/69.79 202.20/69.79 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 202.20/69.79 202.20/69.79 ---------------------------------------- 202.20/69.79 202.20/69.79 (189) 202.20/69.79 Obligation: 202.20/69.79 Q DP problem: 202.20/69.79 The TRS P consists of the following rules: 202.20/69.79 202.20/69.79 MARK(U21(X)) -> MARK(X) 202.20/69.79 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.79 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.79 MARK(U42(X)) -> MARK(X) 202.20/69.79 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.79 ACTIVE(isNatIList(V)) -> MARK(U31(isNatList(V))) 202.20/69.79 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.79 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.79 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.79 MARK(U52(X)) -> MARK(X) 202.20/69.79 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.79 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.79 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.79 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.79 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.79 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.79 MARK(U62(X)) -> MARK(X) 202.20/69.79 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.79 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.79 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.79 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.79 MARK(s(X)) -> MARK(X) 202.20/69.79 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.79 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.79 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.79 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.79 202.20/69.79 The TRS R consists of the following rules: 202.20/69.79 202.20/69.79 mark(zeros) -> active(zeros) 202.20/69.79 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.79 active(zeros) -> mark(cons(0, zeros)) 202.20/69.79 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.79 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.79 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.79 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.79 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.79 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.79 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.79 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.79 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.79 mark(s(X)) -> active(s(mark(X))) 202.20/69.79 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.79 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.79 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.79 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.79 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.79 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.79 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.79 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.79 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.79 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.79 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.79 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.79 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.79 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.79 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.79 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.79 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.79 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.79 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.79 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.79 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.79 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.79 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.79 mark(0) -> active(0) 202.20/69.79 mark(tt) -> active(tt) 202.20/69.79 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.79 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.79 mark(isNat(X)) -> active(isNat(X)) 202.20/69.79 mark(length(X)) -> active(length(mark(X))) 202.20/69.79 mark(nil) -> active(nil) 202.20/69.79 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.79 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.79 take(mark(X1), X2) -> take(X1, X2) 202.20/69.79 take(active(X1), X2) -> take(X1, X2) 202.20/69.79 take(X1, active(X2)) -> take(X1, X2) 202.20/69.79 active(U11(tt)) -> mark(tt) 202.20/69.79 active(U21(tt)) -> mark(tt) 202.20/69.79 active(U31(tt)) -> mark(tt) 202.20/69.79 active(U42(tt)) -> mark(tt) 202.20/69.79 active(U52(tt)) -> mark(tt) 202.20/69.79 active(U62(tt)) -> mark(tt) 202.20/69.79 active(U81(tt)) -> mark(nil) 202.20/69.79 active(isNat(0)) -> mark(tt) 202.20/69.79 active(isNatIList(zeros)) -> mark(tt) 202.20/69.79 active(isNatList(nil)) -> mark(tt) 202.20/69.79 active(length(nil)) -> mark(0) 202.20/69.79 length(active(X)) -> length(X) 202.20/69.79 length(mark(X)) -> length(X) 202.20/69.79 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.79 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.79 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.79 U42(active(X)) -> U42(X) 202.20/69.79 U42(mark(X)) -> U42(X) 202.20/69.79 U52(active(X)) -> U52(X) 202.20/69.79 U52(mark(X)) -> U52(X) 202.20/69.79 U62(active(X)) -> U62(X) 202.20/69.79 U62(mark(X)) -> U62(X) 202.20/69.79 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.79 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.79 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.79 s(active(X)) -> s(X) 202.20/69.79 s(mark(X)) -> s(X) 202.20/69.79 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.79 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.79 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.79 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.79 U11(active(X)) -> U11(X) 202.20/69.79 U11(mark(X)) -> U11(X) 202.20/69.79 U21(active(X)) -> U21(X) 202.20/69.79 U21(mark(X)) -> U21(X) 202.20/69.79 U31(active(X)) -> U31(X) 202.20/69.79 U31(mark(X)) -> U31(X) 202.20/69.79 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.79 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.79 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.79 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.79 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.79 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.79 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.79 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.79 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.79 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.79 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.79 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.79 U81(active(X)) -> U81(X) 202.20/69.79 U81(mark(X)) -> U81(X) 202.20/69.79 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.79 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.79 202.20/69.79 The set Q consists of the following terms: 202.20/69.79 202.20/69.79 active(zeros) 202.20/69.79 active(U11(tt)) 202.20/69.79 active(U21(tt)) 202.20/69.79 active(U31(tt)) 202.20/69.79 active(U41(tt, x0)) 202.20/69.79 active(U42(tt)) 202.20/69.79 active(U51(tt, x0)) 202.20/69.79 active(U52(tt)) 202.20/69.79 active(U61(tt, x0)) 202.20/69.79 active(U62(tt)) 202.20/69.79 active(U71(tt, x0, x1)) 202.20/69.79 active(U72(tt, x0)) 202.20/69.79 active(U81(tt)) 202.20/69.79 active(U91(tt, x0, x1, x2)) 202.20/69.79 active(U92(tt, x0, x1, x2)) 202.20/69.79 active(U93(tt, x0, x1, x2)) 202.20/69.79 active(isNat(0)) 202.20/69.79 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (190) DependencyGraphProof (EQUIVALENT) 202.20/69.80 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (191) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.80 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 202.20/69.80 The set Q consists of the following terms: 202.20/69.80 202.20/69.80 active(zeros) 202.20/69.80 active(U11(tt)) 202.20/69.80 active(U21(tt)) 202.20/69.80 active(U31(tt)) 202.20/69.80 active(U41(tt, x0)) 202.20/69.80 active(U42(tt)) 202.20/69.80 active(U51(tt, x0)) 202.20/69.80 active(U52(tt)) 202.20/69.80 active(U61(tt, x0)) 202.20/69.80 active(U62(tt)) 202.20/69.80 active(U71(tt, x0, x1)) 202.20/69.80 active(U72(tt, x0)) 202.20/69.80 active(U81(tt)) 202.20/69.80 active(U91(tt, x0, x1, x2)) 202.20/69.80 active(U92(tt, x0, x1, x2)) 202.20/69.80 active(U93(tt, x0, x1, x2)) 202.20/69.80 active(isNat(0)) 202.20/69.80 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (192) QDPOrderProof (EQUIVALENT) 202.20/69.80 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.80 202.20/69.80 202.20/69.80 The following pairs can be oriented strictly and are deleted. 202.20/69.80 202.20/69.80 MARK(U51(X1, X2)) -> MARK(X1) 202.20/69.80 The remaining pairs can at least be oriented weakly. 202.20/69.80 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.80 202.20/69.80 POL( ACTIVE_1(x_1) ) = x_1 + 2 202.20/69.80 POL( U41_2(x_1, x_2) ) = 2 202.20/69.80 POL( U51_2(x_1, x_2) ) = x_1 + 2 202.20/69.80 POL( U61_2(x_1, x_2) ) = 2 202.20/69.80 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.80 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.80 POL( length_1(x_1) ) = max{0, -2} 202.20/69.80 POL( mark_1(x_1) ) = x_1 202.20/69.80 POL( zeros ) = 2 202.20/69.80 POL( active_1(x_1) ) = x_1 202.20/69.80 POL( cons_2(x_1, x_2) ) = x_1 + 2 202.20/69.80 POL( 0 ) = 0 202.20/69.80 POL( tt ) = 0 202.20/69.80 POL( U42_1(x_1) ) = x_1 202.20/69.80 POL( isNatIList_1(x_1) ) = 2 202.20/69.80 POL( U52_1(x_1) ) = x_1 202.20/69.80 POL( isNatList_1(x_1) ) = 2 202.20/69.80 POL( U62_1(x_1) ) = x_1 202.20/69.80 POL( isNat_1(x_1) ) = 0 202.20/69.80 POL( s_1(x_1) ) = x_1 202.20/69.80 POL( U91_4(x_1, ..., x_4) ) = 2x_1 + x_4 + 2 202.20/69.80 POL( U92_4(x_1, ..., x_4) ) = x_4 + 2 202.20/69.80 POL( U93_4(x_1, ..., x_4) ) = x_4 + 2 202.20/69.80 POL( take_2(x_1, x_2) ) = 2x_2 + 2 202.20/69.80 POL( U11_1(x_1) ) = max{0, -2} 202.20/69.80 POL( U21_1(x_1) ) = x_1 202.20/69.80 POL( U31_1(x_1) ) = max{0, -2} 202.20/69.80 POL( U81_1(x_1) ) = max{0, -2} 202.20/69.80 POL( nil ) = 0 202.20/69.80 POL( MARK_1(x_1) ) = x_1 + 2 202.20/69.80 202.20/69.80 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 202.20/69.80 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (193) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.80 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 202.20/69.80 The set Q consists of the following terms: 202.20/69.80 202.20/69.80 active(zeros) 202.20/69.80 active(U11(tt)) 202.20/69.80 active(U21(tt)) 202.20/69.80 active(U31(tt)) 202.20/69.80 active(U41(tt, x0)) 202.20/69.80 active(U42(tt)) 202.20/69.80 active(U51(tt, x0)) 202.20/69.80 active(U52(tt)) 202.20/69.80 active(U61(tt, x0)) 202.20/69.80 active(U62(tt)) 202.20/69.80 active(U71(tt, x0, x1)) 202.20/69.80 active(U72(tt, x0)) 202.20/69.80 active(U81(tt)) 202.20/69.80 active(U91(tt, x0, x1, x2)) 202.20/69.80 active(U92(tt, x0, x1, x2)) 202.20/69.80 active(U93(tt, x0, x1, x2)) 202.20/69.80 active(isNat(0)) 202.20/69.80 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (194) QDPOrderProof (EQUIVALENT) 202.20/69.80 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.80 202.20/69.80 202.20/69.80 The following pairs can be oriented strictly and are deleted. 202.20/69.80 202.20/69.80 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 202.20/69.80 The remaining pairs can at least be oriented weakly. 202.20/69.80 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.80 202.20/69.80 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} 202.20/69.80 POL( U41_2(x_1, x_2) ) = max{0, -2} 202.20/69.80 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.80 POL( U61_2(x_1, x_2) ) = 2 202.20/69.80 POL( U71_3(x_1, ..., x_3) ) = 2 202.20/69.80 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.80 POL( length_1(x_1) ) = max{0, -2} 202.20/69.80 POL( mark_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.80 POL( zeros ) = 0 202.20/69.80 POL( active_1(x_1) ) = max{0, -2} 202.20/69.80 POL( cons_2(x_1, x_2) ) = max{0, x_2 - 2} 202.20/69.80 POL( 0 ) = 0 202.20/69.80 POL( tt ) = 0 202.20/69.80 POL( U42_1(x_1) ) = x_1 + 2 202.20/69.80 POL( isNatIList_1(x_1) ) = 0 202.20/69.80 POL( U52_1(x_1) ) = x_1 + 2 202.20/69.80 POL( isNatList_1(x_1) ) = 0 202.20/69.80 POL( U62_1(x_1) ) = 2x_1 + 2 202.20/69.80 POL( isNat_1(x_1) ) = 2x_1 + 2 202.20/69.80 POL( s_1(x_1) ) = x_1 + 2 202.20/69.80 POL( U91_4(x_1, ..., x_4) ) = 2x_1 + 2x_2 + x_3 + x_4 + 2 202.20/69.80 POL( U92_4(x_1, ..., x_4) ) = max{0, 2x_2 + 2x_4 - 2} 202.20/69.80 POL( U93_4(x_1, ..., x_4) ) = max{0, 2x_2 + 2x_4 - 2} 202.20/69.80 POL( take_2(x_1, x_2) ) = x_2 + 2 202.20/69.80 POL( U11_1(x_1) ) = 2 202.20/69.80 POL( U21_1(x_1) ) = x_1 + 2 202.20/69.80 POL( U31_1(x_1) ) = 0 202.20/69.80 POL( U81_1(x_1) ) = 2 202.20/69.80 POL( nil ) = 0 202.20/69.80 POL( MARK_1(x_1) ) = max{0, x_1 - 2} 202.20/69.80 202.20/69.80 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.80 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 202.20/69.80 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (195) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(isNat(X)) -> ACTIVE(isNat(X)) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 202.20/69.80 The set Q consists of the following terms: 202.20/69.80 202.20/69.80 active(zeros) 202.20/69.80 active(U11(tt)) 202.20/69.80 active(U21(tt)) 202.20/69.80 active(U31(tt)) 202.20/69.80 active(U41(tt, x0)) 202.20/69.80 active(U42(tt)) 202.20/69.80 active(U51(tt, x0)) 202.20/69.80 active(U52(tt)) 202.20/69.80 active(U61(tt, x0)) 202.20/69.80 active(U62(tt)) 202.20/69.80 active(U71(tt, x0, x1)) 202.20/69.80 active(U72(tt, x0)) 202.20/69.80 active(U81(tt)) 202.20/69.80 active(U91(tt, x0, x1, x2)) 202.20/69.80 active(U92(tt, x0, x1, x2)) 202.20/69.80 active(U93(tt, x0, x1, x2)) 202.20/69.80 active(isNat(0)) 202.20/69.80 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (196) DependencyGraphProof (EQUIVALENT) 202.20/69.80 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (197) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 202.20/69.80 The set Q consists of the following terms: 202.20/69.80 202.20/69.80 active(zeros) 202.20/69.80 active(U11(tt)) 202.20/69.80 active(U21(tt)) 202.20/69.80 active(U31(tt)) 202.20/69.80 active(U41(tt, x0)) 202.20/69.80 active(U42(tt)) 202.20/69.80 active(U51(tt, x0)) 202.20/69.80 active(U52(tt)) 202.20/69.80 active(U61(tt, x0)) 202.20/69.80 active(U62(tt)) 202.20/69.80 active(U71(tt, x0, x1)) 202.20/69.80 active(U72(tt, x0)) 202.20/69.80 active(U81(tt)) 202.20/69.80 active(U91(tt, x0, x1, x2)) 202.20/69.80 active(U92(tt, x0, x1, x2)) 202.20/69.80 active(U93(tt, x0, x1, x2)) 202.20/69.80 active(isNat(0)) 202.20/69.80 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (198) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.80 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.80 202.20/69.80 Strictly oriented dependency pairs: 202.20/69.80 202.20/69.80 ACTIVE(isNatList(take(V1, V2))) -> MARK(U61(isNat(V1), V2)) 202.20/69.80 202.20/69.80 202.20/69.80 Used ordering: Polynomial interpretation [POLO]: 202.20/69.80 202.20/69.80 POL(0) = 0 202.20/69.80 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.80 POL(MARK(x_1)) = 2*x_1 202.20/69.80 POL(U11(x_1)) = 0 202.20/69.80 POL(U21(x_1)) = x_1 202.20/69.80 POL(U31(x_1)) = 0 202.20/69.80 POL(U41(x_1, x_2)) = 0 202.20/69.80 POL(U42(x_1)) = 2*x_1 202.20/69.80 POL(U51(x_1, x_2)) = 1 202.20/69.80 POL(U52(x_1)) = x_1 202.20/69.80 POL(U61(x_1, x_2)) = 0 202.20/69.80 POL(U62(x_1)) = 2*x_1 202.20/69.80 POL(U71(x_1, x_2, x_3)) = 0 202.20/69.80 POL(U72(x_1, x_2)) = 0 202.20/69.80 POL(U81(x_1)) = 0 202.20/69.80 POL(U91(x_1, x_2, x_3, x_4)) = 0 202.20/69.80 POL(U92(x_1, x_2, x_3, x_4)) = 0 202.20/69.80 POL(U93(x_1, x_2, x_3, x_4)) = 0 202.20/69.80 POL(active(x_1)) = x_1 202.20/69.80 POL(cons(x_1, x_2)) = 0 202.20/69.80 POL(isNat(x_1)) = 0 202.20/69.80 POL(isNatIList(x_1)) = 0 202.20/69.80 POL(isNatList(x_1)) = 1 202.20/69.80 POL(length(x_1)) = 0 202.20/69.80 POL(mark(x_1)) = x_1 202.20/69.80 POL(nil) = 0 202.20/69.80 POL(s(x_1)) = 2*x_1 202.20/69.80 POL(take(x_1, x_2)) = 0 202.20/69.80 POL(tt) = 0 202.20/69.80 POL(zeros) = 0 202.20/69.80 202.20/69.80 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (199) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.80 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.80 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.80 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.80 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.80 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.80 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.80 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.80 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.80 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.80 U81(active(X)) -> U81(X) 202.20/69.80 U81(mark(X)) -> U81(X) 202.20/69.80 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.80 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.80 202.20/69.80 The set Q consists of the following terms: 202.20/69.80 202.20/69.80 active(zeros) 202.20/69.80 active(U11(tt)) 202.20/69.80 active(U21(tt)) 202.20/69.80 active(U31(tt)) 202.20/69.80 active(U41(tt, x0)) 202.20/69.80 active(U42(tt)) 202.20/69.80 active(U51(tt, x0)) 202.20/69.80 active(U52(tt)) 202.20/69.80 active(U61(tt, x0)) 202.20/69.80 active(U62(tt)) 202.20/69.80 active(U71(tt, x0, x1)) 202.20/69.80 active(U72(tt, x0)) 202.20/69.80 active(U81(tt)) 202.20/69.80 active(U91(tt, x0, x1, x2)) 202.20/69.80 active(U92(tt, x0, x1, x2)) 202.20/69.80 active(U93(tt, x0, x1, x2)) 202.20/69.80 active(isNat(0)) 202.20/69.80 active(isNat(length(x0))) 202.20/69.80 active(isNat(s(x0))) 202.20/69.80 active(isNatIList(x0)) 202.20/69.80 active(isNatList(nil)) 202.20/69.80 active(isNatList(cons(x0, x1))) 202.20/69.80 active(isNatList(take(x0, x1))) 202.20/69.80 active(length(nil)) 202.20/69.80 active(length(cons(x0, x1))) 202.20/69.80 active(take(0, x0)) 202.20/69.80 active(take(s(x0), cons(x1, x2))) 202.20/69.80 mark(zeros) 202.20/69.80 mark(cons(x0, x1)) 202.20/69.80 mark(0) 202.20/69.80 mark(U11(x0)) 202.20/69.80 mark(tt) 202.20/69.80 mark(U21(x0)) 202.20/69.80 mark(U31(x0)) 202.20/69.80 mark(U41(x0, x1)) 202.20/69.80 mark(U42(x0)) 202.20/69.80 mark(isNatIList(x0)) 202.20/69.80 mark(U51(x0, x1)) 202.20/69.80 mark(U52(x0)) 202.20/69.80 mark(isNatList(x0)) 202.20/69.80 mark(U61(x0, x1)) 202.20/69.80 mark(U62(x0)) 202.20/69.80 mark(U71(x0, x1, x2)) 202.20/69.80 mark(U72(x0, x1)) 202.20/69.80 mark(isNat(x0)) 202.20/69.80 mark(s(x0)) 202.20/69.80 mark(length(x0)) 202.20/69.80 mark(U81(x0)) 202.20/69.80 mark(nil) 202.20/69.80 mark(U91(x0, x1, x2, x3)) 202.20/69.80 mark(U92(x0, x1, x2, x3)) 202.20/69.80 mark(U93(x0, x1, x2, x3)) 202.20/69.80 mark(take(x0, x1)) 202.20/69.80 cons(mark(x0), x1) 202.20/69.80 cons(x0, mark(x1)) 202.20/69.80 cons(active(x0), x1) 202.20/69.80 cons(x0, active(x1)) 202.20/69.80 U11(mark(x0)) 202.20/69.80 U11(active(x0)) 202.20/69.80 U21(mark(x0)) 202.20/69.80 U21(active(x0)) 202.20/69.80 U31(mark(x0)) 202.20/69.80 U31(active(x0)) 202.20/69.80 U41(mark(x0), x1) 202.20/69.80 U41(x0, mark(x1)) 202.20/69.80 U41(active(x0), x1) 202.20/69.80 U41(x0, active(x1)) 202.20/69.80 U42(mark(x0)) 202.20/69.80 U42(active(x0)) 202.20/69.80 isNatIList(mark(x0)) 202.20/69.80 isNatIList(active(x0)) 202.20/69.80 U51(mark(x0), x1) 202.20/69.80 U51(x0, mark(x1)) 202.20/69.80 U51(active(x0), x1) 202.20/69.80 U51(x0, active(x1)) 202.20/69.80 U52(mark(x0)) 202.20/69.80 U52(active(x0)) 202.20/69.80 isNatList(mark(x0)) 202.20/69.80 isNatList(active(x0)) 202.20/69.80 U61(mark(x0), x1) 202.20/69.80 U61(x0, mark(x1)) 202.20/69.80 U61(active(x0), x1) 202.20/69.80 U61(x0, active(x1)) 202.20/69.80 U62(mark(x0)) 202.20/69.80 U62(active(x0)) 202.20/69.80 U71(mark(x0), x1, x2) 202.20/69.80 U71(x0, mark(x1), x2) 202.20/69.80 U71(x0, x1, mark(x2)) 202.20/69.80 U71(active(x0), x1, x2) 202.20/69.80 U71(x0, active(x1), x2) 202.20/69.80 U71(x0, x1, active(x2)) 202.20/69.80 U72(mark(x0), x1) 202.20/69.80 U72(x0, mark(x1)) 202.20/69.80 U72(active(x0), x1) 202.20/69.80 U72(x0, active(x1)) 202.20/69.80 isNat(mark(x0)) 202.20/69.80 isNat(active(x0)) 202.20/69.80 s(mark(x0)) 202.20/69.80 s(active(x0)) 202.20/69.80 length(mark(x0)) 202.20/69.80 length(active(x0)) 202.20/69.80 U81(mark(x0)) 202.20/69.80 U81(active(x0)) 202.20/69.80 U91(mark(x0), x1, x2, x3) 202.20/69.80 U91(x0, mark(x1), x2, x3) 202.20/69.80 U91(x0, x1, mark(x2), x3) 202.20/69.80 U91(x0, x1, x2, mark(x3)) 202.20/69.80 U91(active(x0), x1, x2, x3) 202.20/69.80 U91(x0, active(x1), x2, x3) 202.20/69.80 U91(x0, x1, active(x2), x3) 202.20/69.80 U91(x0, x1, x2, active(x3)) 202.20/69.80 U92(mark(x0), x1, x2, x3) 202.20/69.80 U92(x0, mark(x1), x2, x3) 202.20/69.80 U92(x0, x1, mark(x2), x3) 202.20/69.80 U92(x0, x1, x2, mark(x3)) 202.20/69.80 U92(active(x0), x1, x2, x3) 202.20/69.80 U92(x0, active(x1), x2, x3) 202.20/69.80 U92(x0, x1, active(x2), x3) 202.20/69.80 U92(x0, x1, x2, active(x3)) 202.20/69.80 U93(mark(x0), x1, x2, x3) 202.20/69.80 U93(x0, mark(x1), x2, x3) 202.20/69.80 U93(x0, x1, mark(x2), x3) 202.20/69.80 U93(x0, x1, x2, mark(x3)) 202.20/69.80 U93(active(x0), x1, x2, x3) 202.20/69.80 U93(x0, active(x1), x2, x3) 202.20/69.80 U93(x0, x1, active(x2), x3) 202.20/69.80 U93(x0, x1, x2, active(x3)) 202.20/69.80 take(mark(x0), x1) 202.20/69.80 take(x0, mark(x1)) 202.20/69.80 take(active(x0), x1) 202.20/69.80 take(x0, active(x1)) 202.20/69.80 202.20/69.80 We have to consider all minimal (P,Q,R)-chains. 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (200) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.80 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.80 202.20/69.80 202.20/69.80 Strictly oriented rules of the TRS R: 202.20/69.80 202.20/69.80 active(length(nil)) -> mark(0) 202.20/69.80 202.20/69.80 Used ordering: Polynomial interpretation [POLO]: 202.20/69.80 202.20/69.80 POL(0) = 0 202.20/69.80 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.80 POL(MARK(x_1)) = 2*x_1 202.20/69.80 POL(U11(x_1)) = x_1 202.20/69.80 POL(U21(x_1)) = x_1 202.20/69.80 POL(U31(x_1)) = 2*x_1 202.20/69.80 POL(U41(x_1, x_2)) = 2*x_1 202.20/69.80 POL(U42(x_1)) = x_1 202.20/69.80 POL(U51(x_1, x_2)) = 2*x_1 202.20/69.80 POL(U52(x_1)) = 2*x_1 202.20/69.80 POL(U61(x_1, x_2)) = 2*x_1 202.20/69.80 POL(U62(x_1)) = 2*x_1 202.20/69.80 POL(U71(x_1, x_2, x_3)) = x_1 + 2*x_2 202.20/69.80 POL(U72(x_1, x_2)) = x_1 + 2*x_2 202.20/69.80 POL(U81(x_1)) = 2 + x_1 202.20/69.80 POL(U91(x_1, x_2, x_3, x_4)) = 2 + 2*x_1 + x_2 + x_3 + x_4 202.20/69.80 POL(U92(x_1, x_2, x_3, x_4)) = 2 + 2*x_1 + x_2 + x_3 + x_4 202.20/69.80 POL(U93(x_1, x_2, x_3, x_4)) = 2 + x_1 + x_2 + x_3 + x_4 202.20/69.80 POL(active(x_1)) = x_1 202.20/69.80 POL(cons(x_1, x_2)) = x_1 + x_2 202.20/69.80 POL(isNat(x_1)) = 0 202.20/69.80 POL(isNatIList(x_1)) = 0 202.20/69.80 POL(isNatList(x_1)) = 0 202.20/69.80 POL(length(x_1)) = 2*x_1 202.20/69.80 POL(mark(x_1)) = x_1 202.20/69.80 POL(nil) = 2 202.20/69.80 POL(s(x_1)) = x_1 202.20/69.80 POL(take(x_1, x_2)) = 2 + x_1 + x_2 202.20/69.80 POL(tt) = 0 202.20/69.80 POL(zeros) = 0 202.20/69.80 202.20/69.80 202.20/69.80 ---------------------------------------- 202.20/69.80 202.20/69.80 (201) 202.20/69.80 Obligation: 202.20/69.80 Q DP problem: 202.20/69.80 The TRS P consists of the following rules: 202.20/69.80 202.20/69.80 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.80 MARK(U42(X)) -> MARK(X) 202.20/69.80 MARK(U21(X)) -> MARK(X) 202.20/69.80 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.80 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.80 MARK(U52(X)) -> MARK(X) 202.20/69.80 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.80 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.80 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.80 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.80 MARK(U62(X)) -> MARK(X) 202.20/69.80 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.80 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.80 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.80 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.80 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.80 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.80 MARK(s(X)) -> MARK(X) 202.20/69.80 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.80 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.80 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.80 202.20/69.80 The TRS R consists of the following rules: 202.20/69.80 202.20/69.80 mark(zeros) -> active(zeros) 202.20/69.80 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.80 active(zeros) -> mark(cons(0, zeros)) 202.20/69.80 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.80 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.80 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.80 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.80 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.80 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.80 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.80 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.80 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.80 mark(s(X)) -> active(s(mark(X))) 202.20/69.80 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.80 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.80 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.80 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.80 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.80 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.80 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.80 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.80 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.80 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.80 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.80 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.80 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.80 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.80 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.80 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.80 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.80 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.80 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.80 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.80 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.80 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.80 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.80 mark(0) -> active(0) 202.20/69.80 mark(tt) -> active(tt) 202.20/69.80 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.80 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.80 mark(isNat(X)) -> active(isNat(X)) 202.20/69.80 mark(length(X)) -> active(length(mark(X))) 202.20/69.80 mark(nil) -> active(nil) 202.20/69.80 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.80 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.80 take(mark(X1), X2) -> take(X1, X2) 202.20/69.80 take(active(X1), X2) -> take(X1, X2) 202.20/69.80 take(X1, active(X2)) -> take(X1, X2) 202.20/69.80 active(U11(tt)) -> mark(tt) 202.20/69.80 active(U21(tt)) -> mark(tt) 202.20/69.80 active(U31(tt)) -> mark(tt) 202.20/69.80 active(U42(tt)) -> mark(tt) 202.20/69.80 active(U52(tt)) -> mark(tt) 202.20/69.80 active(U62(tt)) -> mark(tt) 202.20/69.80 active(U81(tt)) -> mark(nil) 202.20/69.80 active(isNat(0)) -> mark(tt) 202.20/69.80 active(isNatIList(zeros)) -> mark(tt) 202.20/69.80 active(isNatList(nil)) -> mark(tt) 202.20/69.80 length(active(X)) -> length(X) 202.20/69.80 length(mark(X)) -> length(X) 202.20/69.80 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.80 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.80 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.80 U42(active(X)) -> U42(X) 202.20/69.80 U42(mark(X)) -> U42(X) 202.20/69.80 U52(active(X)) -> U52(X) 202.20/69.80 U52(mark(X)) -> U52(X) 202.20/69.80 U62(active(X)) -> U62(X) 202.20/69.80 U62(mark(X)) -> U62(X) 202.20/69.80 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.80 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.80 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.80 s(active(X)) -> s(X) 202.20/69.80 s(mark(X)) -> s(X) 202.20/69.80 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.80 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.80 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.80 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.80 U11(active(X)) -> U11(X) 202.20/69.80 U11(mark(X)) -> U11(X) 202.20/69.80 U21(active(X)) -> U21(X) 202.20/69.80 U21(mark(X)) -> U21(X) 202.20/69.80 U31(active(X)) -> U31(X) 202.20/69.80 U31(mark(X)) -> U31(X) 202.20/69.80 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.80 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.80 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (202) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.81 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.81 202.20/69.81 Strictly oriented dependency pairs: 202.20/69.81 202.20/69.81 ACTIVE(U61(tt, V2)) -> MARK(U62(isNatIList(V2))) 202.20/69.81 202.20/69.81 202.20/69.81 Used ordering: Polynomial interpretation [POLO]: 202.20/69.81 202.20/69.81 POL(0) = 0 202.20/69.81 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.81 POL(MARK(x_1)) = 2*x_1 202.20/69.81 POL(U11(x_1)) = 0 202.20/69.81 POL(U21(x_1)) = x_1 202.20/69.81 POL(U31(x_1)) = 0 202.20/69.81 POL(U41(x_1, x_2)) = 0 202.20/69.81 POL(U42(x_1)) = 2*x_1 202.20/69.81 POL(U51(x_1, x_2)) = 2*x_2 202.20/69.81 POL(U52(x_1)) = x_1 202.20/69.81 POL(U61(x_1, x_2)) = 1 202.20/69.81 POL(U62(x_1)) = x_1 202.20/69.81 POL(U71(x_1, x_2, x_3)) = 0 202.20/69.81 POL(U72(x_1, x_2)) = 0 202.20/69.81 POL(U81(x_1)) = 0 202.20/69.81 POL(U91(x_1, x_2, x_3, x_4)) = 2 + x_2 202.20/69.81 POL(U92(x_1, x_2, x_3, x_4)) = 2 + x_2 202.20/69.81 POL(U93(x_1, x_2, x_3, x_4)) = 2 + x_2 202.20/69.81 POL(active(x_1)) = x_1 202.20/69.81 POL(cons(x_1, x_2)) = x_2 202.20/69.81 POL(isNat(x_1)) = 0 202.20/69.81 POL(isNatIList(x_1)) = 0 202.20/69.81 POL(isNatList(x_1)) = 2*x_1 202.20/69.81 POL(length(x_1)) = 0 202.20/69.81 POL(mark(x_1)) = x_1 202.20/69.81 POL(nil) = 0 202.20/69.81 POL(s(x_1)) = x_1 202.20/69.81 POL(take(x_1, x_2)) = 2 + x_2 202.20/69.81 POL(tt) = 0 202.20/69.81 POL(zeros) = 0 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (203) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(U62(X)) -> MARK(X) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(U81(tt)) -> mark(nil) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (204) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.81 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.81 202.20/69.81 Strictly oriented dependency pairs: 202.20/69.81 202.20/69.81 MARK(U61(X1, X2)) -> ACTIVE(U61(mark(X1), X2)) 202.20/69.81 202.20/69.81 202.20/69.81 Used ordering: Polynomial interpretation [POLO]: 202.20/69.81 202.20/69.81 POL(0) = 0 202.20/69.81 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.81 POL(MARK(x_1)) = 2 202.20/69.81 POL(U11(x_1)) = 0 202.20/69.81 POL(U21(x_1)) = 0 202.20/69.81 POL(U31(x_1)) = 0 202.20/69.81 POL(U41(x_1, x_2)) = 1 202.20/69.81 POL(U42(x_1)) = 0 202.20/69.81 POL(U51(x_1, x_2)) = 1 202.20/69.81 POL(U52(x_1)) = 0 202.20/69.81 POL(U61(x_1, x_2)) = 0 202.20/69.81 POL(U62(x_1)) = 0 202.20/69.81 POL(U71(x_1, x_2, x_3)) = 1 202.20/69.81 POL(U72(x_1, x_2)) = 1 202.20/69.81 POL(U81(x_1)) = 0 202.20/69.81 POL(U91(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(U92(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(U93(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(active(x_1)) = 0 202.20/69.81 POL(cons(x_1, x_2)) = 0 202.20/69.81 POL(isNat(x_1)) = 0 202.20/69.81 POL(isNatIList(x_1)) = 1 202.20/69.81 POL(isNatList(x_1)) = 1 202.20/69.81 POL(length(x_1)) = 1 202.20/69.81 POL(mark(x_1)) = 0 202.20/69.81 POL(nil) = 0 202.20/69.81 POL(s(x_1)) = 0 202.20/69.81 POL(take(x_1, x_2)) = 0 202.20/69.81 POL(tt) = 0 202.20/69.81 POL(zeros) = 0 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (205) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(U62(X)) -> MARK(X) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(U81(tt)) -> mark(nil) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (206) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.81 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.81 202.20/69.81 Strictly oriented dependency pairs: 202.20/69.81 202.20/69.81 MARK(U62(X)) -> MARK(X) 202.20/69.81 202.20/69.81 202.20/69.81 Used ordering: Polynomial interpretation [POLO]: 202.20/69.81 202.20/69.81 POL(0) = 0 202.20/69.81 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.81 POL(MARK(x_1)) = 2*x_1 202.20/69.81 POL(U11(x_1)) = 0 202.20/69.81 POL(U21(x_1)) = 2*x_1 202.20/69.81 POL(U31(x_1)) = 0 202.20/69.81 POL(U41(x_1, x_2)) = 0 202.20/69.81 POL(U42(x_1)) = 2*x_1 202.20/69.81 POL(U51(x_1, x_2)) = 1 202.20/69.81 POL(U52(x_1)) = x_1 202.20/69.81 POL(U61(x_1, x_2)) = 1 202.20/69.81 POL(U62(x_1)) = 1 + 2*x_1 202.20/69.81 POL(U71(x_1, x_2, x_3)) = 0 202.20/69.81 POL(U72(x_1, x_2)) = 0 202.20/69.81 POL(U81(x_1)) = 0 202.20/69.81 POL(U91(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(U92(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(U93(x_1, x_2, x_3, x_4)) = 0 202.20/69.81 POL(active(x_1)) = x_1 202.20/69.81 POL(cons(x_1, x_2)) = 0 202.20/69.81 POL(isNat(x_1)) = 0 202.20/69.81 POL(isNatIList(x_1)) = 0 202.20/69.81 POL(isNatList(x_1)) = 1 202.20/69.81 POL(length(x_1)) = 0 202.20/69.81 POL(mark(x_1)) = x_1 202.20/69.81 POL(nil) = 0 202.20/69.81 POL(s(x_1)) = 2*x_1 202.20/69.81 POL(take(x_1, x_2)) = 0 202.20/69.81 POL(tt) = 0 202.20/69.81 POL(zeros) = 0 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (207) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(U81(tt)) -> mark(nil) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (208) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.81 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.81 202.20/69.81 202.20/69.81 Strictly oriented rules of the TRS R: 202.20/69.81 202.20/69.81 active(take(0, IL)) -> mark(U81(isNatIList(IL))) 202.20/69.81 202.20/69.81 Used ordering: Polynomial interpretation [POLO]: 202.20/69.81 202.20/69.81 POL(0) = 0 202.20/69.81 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.81 POL(MARK(x_1)) = 2*x_1 202.20/69.81 POL(U11(x_1)) = x_1 202.20/69.81 POL(U21(x_1)) = x_1 202.20/69.81 POL(U31(x_1)) = 2*x_1 202.20/69.81 POL(U41(x_1, x_2)) = 2*x_1 202.20/69.81 POL(U42(x_1)) = 2*x_1 202.20/69.81 POL(U51(x_1, x_2)) = 2*x_1 202.20/69.81 POL(U52(x_1)) = 2*x_1 202.20/69.81 POL(U61(x_1, x_2)) = x_1 202.20/69.81 POL(U62(x_1)) = x_1 202.20/69.81 POL(U71(x_1, x_2, x_3)) = 2*x_1 + x_2 + x_3 202.20/69.81 POL(U72(x_1, x_2)) = x_1 + x_2 202.20/69.81 POL(U81(x_1)) = x_1 202.20/69.81 POL(U91(x_1, x_2, x_3, x_4)) = 2 + x_1 + x_2 + x_3 + x_4 202.20/69.81 POL(U92(x_1, x_2, x_3, x_4)) = 2 + 2*x_1 + x_2 + x_3 + x_4 202.20/69.81 POL(U93(x_1, x_2, x_3, x_4)) = 2 + x_1 + x_2 + x_3 + x_4 202.20/69.81 POL(active(x_1)) = x_1 202.20/69.81 POL(cons(x_1, x_2)) = x_1 + x_2 202.20/69.81 POL(isNat(x_1)) = 0 202.20/69.81 POL(isNatIList(x_1)) = 0 202.20/69.81 POL(isNatList(x_1)) = 0 202.20/69.81 POL(length(x_1)) = x_1 202.20/69.81 POL(mark(x_1)) = x_1 202.20/69.81 POL(nil) = 0 202.20/69.81 POL(s(x_1)) = x_1 202.20/69.81 POL(take(x_1, x_2)) = 2 + x_1 + x_2 202.20/69.81 POL(tt) = 0 202.20/69.81 POL(zeros) = 0 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (209) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(U81(tt)) -> mark(nil) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (210) QDPQMonotonicMRRProof (EQUIVALENT) 202.20/69.81 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 202.20/69.81 202.20/69.81 202.20/69.81 Strictly oriented rules of the TRS R: 202.20/69.81 202.20/69.81 active(U81(tt)) -> mark(nil) 202.20/69.81 202.20/69.81 Used ordering: Polynomial interpretation [POLO]: 202.20/69.81 202.20/69.81 POL(0) = 0 202.20/69.81 POL(ACTIVE(x_1)) = 2*x_1 202.20/69.81 POL(MARK(x_1)) = 2*x_1 202.20/69.81 POL(U11(x_1)) = x_1 202.20/69.81 POL(U21(x_1)) = x_1 202.20/69.81 POL(U31(x_1)) = 2*x_1 202.20/69.81 POL(U41(x_1, x_2)) = 2*x_1 202.20/69.81 POL(U42(x_1)) = 2*x_1 202.20/69.81 POL(U51(x_1, x_2)) = 2*x_1 202.20/69.81 POL(U52(x_1)) = x_1 202.20/69.81 POL(U61(x_1, x_2)) = 2*x_1 202.20/69.81 POL(U62(x_1)) = 2*x_1 202.20/69.81 POL(U71(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + x_3 202.20/69.81 POL(U72(x_1, x_2)) = 2*x_1 + 2*x_2 202.20/69.81 POL(U81(x_1)) = 2 + x_1 202.20/69.81 POL(U91(x_1, x_2, x_3, x_4)) = 2*x_1 + 2*x_2 + 2*x_3 + x_4 202.20/69.81 POL(U92(x_1, x_2, x_3, x_4)) = 2*x_1 + 2*x_2 + 2*x_3 + x_4 202.20/69.81 POL(U93(x_1, x_2, x_3, x_4)) = 2*x_1 + 2*x_2 + 2*x_3 + x_4 202.20/69.81 POL(active(x_1)) = x_1 202.20/69.81 POL(cons(x_1, x_2)) = x_1 + 2*x_2 202.20/69.81 POL(isNat(x_1)) = 0 202.20/69.81 POL(isNatIList(x_1)) = 0 202.20/69.81 POL(isNatList(x_1)) = 0 202.20/69.81 POL(length(x_1)) = x_1 202.20/69.81 POL(mark(x_1)) = x_1 202.20/69.81 POL(nil) = 0 202.20/69.81 POL(s(x_1)) = 2*x_1 202.20/69.81 POL(take(x_1, x_2)) = x_1 + x_2 202.20/69.81 POL(tt) = 0 202.20/69.81 POL(zeros) = 0 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (211) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.81 mark(U93(x0, x1, x2, x3)) 202.20/69.81 mark(take(x0, x1)) 202.20/69.81 cons(mark(x0), x1) 202.20/69.81 cons(x0, mark(x1)) 202.20/69.81 cons(active(x0), x1) 202.20/69.81 cons(x0, active(x1)) 202.20/69.81 U11(mark(x0)) 202.20/69.81 U11(active(x0)) 202.20/69.81 U21(mark(x0)) 202.20/69.81 U21(active(x0)) 202.20/69.81 U31(mark(x0)) 202.20/69.81 U31(active(x0)) 202.20/69.81 U41(mark(x0), x1) 202.20/69.81 U41(x0, mark(x1)) 202.20/69.81 U41(active(x0), x1) 202.20/69.81 U41(x0, active(x1)) 202.20/69.81 U42(mark(x0)) 202.20/69.81 U42(active(x0)) 202.20/69.81 isNatIList(mark(x0)) 202.20/69.81 isNatIList(active(x0)) 202.20/69.81 U51(mark(x0), x1) 202.20/69.81 U51(x0, mark(x1)) 202.20/69.81 U51(active(x0), x1) 202.20/69.81 U51(x0, active(x1)) 202.20/69.81 U52(mark(x0)) 202.20/69.81 U52(active(x0)) 202.20/69.81 isNatList(mark(x0)) 202.20/69.81 isNatList(active(x0)) 202.20/69.81 U61(mark(x0), x1) 202.20/69.81 U61(x0, mark(x1)) 202.20/69.81 U61(active(x0), x1) 202.20/69.81 U61(x0, active(x1)) 202.20/69.81 U62(mark(x0)) 202.20/69.81 U62(active(x0)) 202.20/69.81 U71(mark(x0), x1, x2) 202.20/69.81 U71(x0, mark(x1), x2) 202.20/69.81 U71(x0, x1, mark(x2)) 202.20/69.81 U71(active(x0), x1, x2) 202.20/69.81 U71(x0, active(x1), x2) 202.20/69.81 U71(x0, x1, active(x2)) 202.20/69.81 U72(mark(x0), x1) 202.20/69.81 U72(x0, mark(x1)) 202.20/69.81 U72(active(x0), x1) 202.20/69.81 U72(x0, active(x1)) 202.20/69.81 isNat(mark(x0)) 202.20/69.81 isNat(active(x0)) 202.20/69.81 s(mark(x0)) 202.20/69.81 s(active(x0)) 202.20/69.81 length(mark(x0)) 202.20/69.81 length(active(x0)) 202.20/69.81 U81(mark(x0)) 202.20/69.81 U81(active(x0)) 202.20/69.81 U91(mark(x0), x1, x2, x3) 202.20/69.81 U91(x0, mark(x1), x2, x3) 202.20/69.81 U91(x0, x1, mark(x2), x3) 202.20/69.81 U91(x0, x1, x2, mark(x3)) 202.20/69.81 U91(active(x0), x1, x2, x3) 202.20/69.81 U91(x0, active(x1), x2, x3) 202.20/69.81 U91(x0, x1, active(x2), x3) 202.20/69.81 U91(x0, x1, x2, active(x3)) 202.20/69.81 U92(mark(x0), x1, x2, x3) 202.20/69.81 U92(x0, mark(x1), x2, x3) 202.20/69.81 U92(x0, x1, mark(x2), x3) 202.20/69.81 U92(x0, x1, x2, mark(x3)) 202.20/69.81 U92(active(x0), x1, x2, x3) 202.20/69.81 U92(x0, active(x1), x2, x3) 202.20/69.81 U92(x0, x1, active(x2), x3) 202.20/69.81 U92(x0, x1, x2, active(x3)) 202.20/69.81 U93(mark(x0), x1, x2, x3) 202.20/69.81 U93(x0, mark(x1), x2, x3) 202.20/69.81 U93(x0, x1, mark(x2), x3) 202.20/69.81 U93(x0, x1, x2, mark(x3)) 202.20/69.81 U93(active(x0), x1, x2, x3) 202.20/69.81 U93(x0, active(x1), x2, x3) 202.20/69.81 U93(x0, x1, active(x2), x3) 202.20/69.81 U93(x0, x1, x2, active(x3)) 202.20/69.81 take(mark(x0), x1) 202.20/69.81 take(x0, mark(x1)) 202.20/69.81 take(active(x0), x1) 202.20/69.81 take(x0, active(x1)) 202.20/69.81 202.20/69.81 We have to consider all minimal (P,Q,R)-chains. 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (212) QDPOrderProof (EQUIVALENT) 202.20/69.81 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.81 202.20/69.81 202.20/69.81 The following pairs can be oriented strictly and are deleted. 202.20/69.81 202.20/69.81 MARK(U21(X)) -> MARK(X) 202.20/69.81 The remaining pairs can at least be oriented weakly. 202.20/69.81 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.81 202.20/69.81 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.20/69.81 POL( U41_2(x_1, x_2) ) = max{0, -2} 202.20/69.81 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.81 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.81 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.81 POL( length_1(x_1) ) = max{0, -2} 202.20/69.81 POL( mark_1(x_1) ) = max{0, x_1 - 2} 202.20/69.81 POL( zeros ) = 0 202.20/69.81 POL( active_1(x_1) ) = max{0, -2} 202.20/69.81 POL( cons_2(x_1, x_2) ) = 2 202.20/69.81 POL( 0 ) = 0 202.20/69.81 POL( tt ) = 0 202.20/69.81 POL( U42_1(x_1) ) = 2x_1 + 1 202.20/69.81 POL( isNatIList_1(x_1) ) = 0 202.20/69.81 POL( U52_1(x_1) ) = 2x_1 + 1 202.20/69.81 POL( isNatList_1(x_1) ) = 0 202.20/69.81 POL( U61_2(x_1, x_2) ) = x_1 + x_2 202.20/69.81 POL( U62_1(x_1) ) = max{0, -2} 202.20/69.81 POL( isNat_1(x_1) ) = 0 202.20/69.81 POL( s_1(x_1) ) = 2x_1 + 1 202.20/69.81 POL( U91_4(x_1, ..., x_4) ) = x_1 + x_2 + 2x_4 + 2 202.20/69.81 POL( U92_4(x_1, ..., x_4) ) = 2x_1 + 2x_2 + 2x_3 + x_4 + 2 202.20/69.81 POL( U93_4(x_1, ..., x_4) ) = x_1 + 2 202.20/69.81 POL( take_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} 202.20/69.81 POL( U11_1(x_1) ) = 2 202.20/69.81 POL( U21_1(x_1) ) = 2x_1 + 2 202.20/69.81 POL( U31_1(x_1) ) = 2 202.20/69.81 POL( U81_1(x_1) ) = 0 202.20/69.81 POL( nil ) = 2 202.20/69.81 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.81 202.20/69.81 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.81 none 202.20/69.81 202.20/69.81 202.20/69.81 ---------------------------------------- 202.20/69.81 202.20/69.81 (213) 202.20/69.81 Obligation: 202.20/69.81 Q DP problem: 202.20/69.81 The TRS P consists of the following rules: 202.20/69.81 202.20/69.81 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.81 MARK(U42(X)) -> MARK(X) 202.20/69.81 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.81 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.81 MARK(U52(X)) -> MARK(X) 202.20/69.81 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.81 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.81 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.81 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.81 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.81 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.81 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.81 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.81 MARK(s(X)) -> MARK(X) 202.20/69.81 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.81 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.81 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.81 202.20/69.81 The TRS R consists of the following rules: 202.20/69.81 202.20/69.81 mark(zeros) -> active(zeros) 202.20/69.81 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.81 active(zeros) -> mark(cons(0, zeros)) 202.20/69.81 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.81 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.81 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.81 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.81 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.81 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.81 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.81 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.81 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.81 mark(s(X)) -> active(s(mark(X))) 202.20/69.81 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.81 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.81 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.81 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.81 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.81 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.81 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.81 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.81 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.81 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.81 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.81 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.81 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.81 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.81 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.81 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.81 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.81 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.81 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.81 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.81 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.81 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.81 mark(0) -> active(0) 202.20/69.81 mark(tt) -> active(tt) 202.20/69.81 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.81 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.81 mark(isNat(X)) -> active(isNat(X)) 202.20/69.81 mark(length(X)) -> active(length(mark(X))) 202.20/69.81 mark(nil) -> active(nil) 202.20/69.81 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.81 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.81 take(mark(X1), X2) -> take(X1, X2) 202.20/69.81 take(active(X1), X2) -> take(X1, X2) 202.20/69.81 take(X1, active(X2)) -> take(X1, X2) 202.20/69.81 active(U11(tt)) -> mark(tt) 202.20/69.81 active(U21(tt)) -> mark(tt) 202.20/69.81 active(U31(tt)) -> mark(tt) 202.20/69.81 active(U42(tt)) -> mark(tt) 202.20/69.81 active(U52(tt)) -> mark(tt) 202.20/69.81 active(U62(tt)) -> mark(tt) 202.20/69.81 active(isNat(0)) -> mark(tt) 202.20/69.81 active(isNatIList(zeros)) -> mark(tt) 202.20/69.81 active(isNatList(nil)) -> mark(tt) 202.20/69.81 length(active(X)) -> length(X) 202.20/69.81 length(mark(X)) -> length(X) 202.20/69.81 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.81 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.81 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.81 U42(active(X)) -> U42(X) 202.20/69.81 U42(mark(X)) -> U42(X) 202.20/69.81 U52(active(X)) -> U52(X) 202.20/69.81 U52(mark(X)) -> U52(X) 202.20/69.81 U62(active(X)) -> U62(X) 202.20/69.81 U62(mark(X)) -> U62(X) 202.20/69.81 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.81 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.81 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.81 s(active(X)) -> s(X) 202.20/69.81 s(mark(X)) -> s(X) 202.20/69.81 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.81 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.81 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.81 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.81 U11(active(X)) -> U11(X) 202.20/69.81 U11(mark(X)) -> U11(X) 202.20/69.81 U21(active(X)) -> U21(X) 202.20/69.81 U21(mark(X)) -> U21(X) 202.20/69.81 U31(active(X)) -> U31(X) 202.20/69.81 U31(mark(X)) -> U31(X) 202.20/69.81 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.81 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.81 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.81 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.81 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.81 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.81 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.81 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.81 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.81 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.81 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.81 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.81 U81(active(X)) -> U81(X) 202.20/69.81 U81(mark(X)) -> U81(X) 202.20/69.81 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.81 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.81 202.20/69.81 The set Q consists of the following terms: 202.20/69.81 202.20/69.81 active(zeros) 202.20/69.81 active(U11(tt)) 202.20/69.81 active(U21(tt)) 202.20/69.81 active(U31(tt)) 202.20/69.81 active(U41(tt, x0)) 202.20/69.81 active(U42(tt)) 202.20/69.81 active(U51(tt, x0)) 202.20/69.81 active(U52(tt)) 202.20/69.81 active(U61(tt, x0)) 202.20/69.81 active(U62(tt)) 202.20/69.81 active(U71(tt, x0, x1)) 202.20/69.81 active(U72(tt, x0)) 202.20/69.81 active(U81(tt)) 202.20/69.81 active(U91(tt, x0, x1, x2)) 202.20/69.81 active(U92(tt, x0, x1, x2)) 202.20/69.81 active(U93(tt, x0, x1, x2)) 202.20/69.81 active(isNat(0)) 202.20/69.81 active(isNat(length(x0))) 202.20/69.81 active(isNat(s(x0))) 202.20/69.81 active(isNatIList(x0)) 202.20/69.81 active(isNatList(nil)) 202.20/69.81 active(isNatList(cons(x0, x1))) 202.20/69.81 active(isNatList(take(x0, x1))) 202.20/69.81 active(length(nil)) 202.20/69.81 active(length(cons(x0, x1))) 202.20/69.81 active(take(0, x0)) 202.20/69.81 active(take(s(x0), cons(x1, x2))) 202.20/69.81 mark(zeros) 202.20/69.81 mark(cons(x0, x1)) 202.20/69.81 mark(0) 202.20/69.81 mark(U11(x0)) 202.20/69.81 mark(tt) 202.20/69.81 mark(U21(x0)) 202.20/69.81 mark(U31(x0)) 202.20/69.81 mark(U41(x0, x1)) 202.20/69.81 mark(U42(x0)) 202.20/69.81 mark(isNatIList(x0)) 202.20/69.81 mark(U51(x0, x1)) 202.20/69.81 mark(U52(x0)) 202.20/69.81 mark(isNatList(x0)) 202.20/69.81 mark(U61(x0, x1)) 202.20/69.81 mark(U62(x0)) 202.20/69.81 mark(U71(x0, x1, x2)) 202.20/69.81 mark(U72(x0, x1)) 202.20/69.81 mark(isNat(x0)) 202.20/69.81 mark(s(x0)) 202.20/69.81 mark(length(x0)) 202.20/69.81 mark(U81(x0)) 202.20/69.81 mark(nil) 202.20/69.81 mark(U91(x0, x1, x2, x3)) 202.20/69.81 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.20/69.82 U21(mark(x0)) 202.20/69.82 U21(active(x0)) 202.20/69.82 U31(mark(x0)) 202.20/69.82 U31(active(x0)) 202.20/69.82 U41(mark(x0), x1) 202.20/69.82 U41(x0, mark(x1)) 202.20/69.82 U41(active(x0), x1) 202.20/69.82 U41(x0, active(x1)) 202.20/69.82 U42(mark(x0)) 202.20/69.82 U42(active(x0)) 202.20/69.82 isNatIList(mark(x0)) 202.20/69.82 isNatIList(active(x0)) 202.20/69.82 U51(mark(x0), x1) 202.20/69.82 U51(x0, mark(x1)) 202.20/69.82 U51(active(x0), x1) 202.20/69.82 U51(x0, active(x1)) 202.20/69.82 U52(mark(x0)) 202.20/69.82 U52(active(x0)) 202.20/69.82 isNatList(mark(x0)) 202.20/69.82 isNatList(active(x0)) 202.20/69.82 U61(mark(x0), x1) 202.20/69.82 U61(x0, mark(x1)) 202.20/69.82 U61(active(x0), x1) 202.20/69.82 U61(x0, active(x1)) 202.20/69.82 U62(mark(x0)) 202.20/69.82 U62(active(x0)) 202.20/69.82 U71(mark(x0), x1, x2) 202.20/69.82 U71(x0, mark(x1), x2) 202.20/69.82 U71(x0, x1, mark(x2)) 202.20/69.82 U71(active(x0), x1, x2) 202.20/69.82 U71(x0, active(x1), x2) 202.20/69.82 U71(x0, x1, active(x2)) 202.20/69.82 U72(mark(x0), x1) 202.20/69.82 U72(x0, mark(x1)) 202.20/69.82 U72(active(x0), x1) 202.20/69.82 U72(x0, active(x1)) 202.20/69.82 isNat(mark(x0)) 202.20/69.82 isNat(active(x0)) 202.20/69.82 s(mark(x0)) 202.20/69.82 s(active(x0)) 202.20/69.82 length(mark(x0)) 202.20/69.82 length(active(x0)) 202.20/69.82 U81(mark(x0)) 202.20/69.82 U81(active(x0)) 202.20/69.82 U91(mark(x0), x1, x2, x3) 202.20/69.82 U91(x0, mark(x1), x2, x3) 202.20/69.82 U91(x0, x1, mark(x2), x3) 202.20/69.82 U91(x0, x1, x2, mark(x3)) 202.20/69.82 U91(active(x0), x1, x2, x3) 202.20/69.82 U91(x0, active(x1), x2, x3) 202.20/69.82 U91(x0, x1, active(x2), x3) 202.20/69.82 U91(x0, x1, x2, active(x3)) 202.20/69.82 U92(mark(x0), x1, x2, x3) 202.20/69.82 U92(x0, mark(x1), x2, x3) 202.20/69.82 U92(x0, x1, mark(x2), x3) 202.20/69.82 U92(x0, x1, x2, mark(x3)) 202.20/69.82 U92(active(x0), x1, x2, x3) 202.20/69.82 U92(x0, active(x1), x2, x3) 202.20/69.82 U92(x0, x1, active(x2), x3) 202.20/69.82 U92(x0, x1, x2, active(x3)) 202.20/69.82 U93(mark(x0), x1, x2, x3) 202.20/69.82 U93(x0, mark(x1), x2, x3) 202.20/69.82 U93(x0, x1, mark(x2), x3) 202.20/69.82 U93(x0, x1, x2, mark(x3)) 202.20/69.82 U93(active(x0), x1, x2, x3) 202.20/69.82 U93(x0, active(x1), x2, x3) 202.20/69.82 U93(x0, x1, active(x2), x3) 202.20/69.82 U93(x0, x1, x2, active(x3)) 202.20/69.82 take(mark(x0), x1) 202.20/69.82 take(x0, mark(x1)) 202.20/69.82 take(active(x0), x1) 202.20/69.82 take(x0, active(x1)) 202.20/69.82 202.20/69.82 We have to consider all minimal (P,Q,R)-chains. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (214) QDPOrderProof (EQUIVALENT) 202.20/69.82 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.82 202.20/69.82 202.20/69.82 The following pairs can be oriented strictly and are deleted. 202.20/69.82 202.20/69.82 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 202.20/69.82 The remaining pairs can at least be oriented weakly. 202.20/69.82 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.82 202.20/69.82 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} 202.20/69.82 POL( U41_2(x_1, x_2) ) = 2x_2 + 2 202.20/69.82 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.82 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( length_1(x_1) ) = max{0, -2} 202.20/69.82 POL( mark_1(x_1) ) = x_1 + 2 202.20/69.82 POL( zeros ) = 0 202.20/69.82 POL( active_1(x_1) ) = 2x_1 202.20/69.82 POL( cons_2(x_1, x_2) ) = 2x_2 + 2 202.20/69.82 POL( 0 ) = 0 202.20/69.82 POL( tt ) = 0 202.20/69.82 POL( U42_1(x_1) ) = x_1 + 1 202.20/69.82 POL( isNatIList_1(x_1) ) = 2x_1 + 1 202.20/69.82 POL( U52_1(x_1) ) = 2x_1 + 1 202.20/69.82 POL( isNatList_1(x_1) ) = 0 202.20/69.82 POL( U61_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.20/69.82 POL( U62_1(x_1) ) = max{0, -2} 202.20/69.82 POL( isNat_1(x_1) ) = 2 202.20/69.82 POL( s_1(x_1) ) = 2x_1 + 1 202.20/69.82 POL( U91_4(x_1, ..., x_4) ) = max{0, x_1 + 2x_4 - 2} 202.20/69.82 POL( U92_4(x_1, ..., x_4) ) = 2x_1 + x_2 + x_4 + 2 202.20/69.82 POL( U93_4(x_1, ..., x_4) ) = x_2 + x_3 + x_4 + 2 202.20/69.82 POL( take_2(x_1, x_2) ) = 2 202.20/69.82 POL( U11_1(x_1) ) = max{0, -2} 202.20/69.82 POL( U21_1(x_1) ) = max{0, -2} 202.20/69.82 POL( U31_1(x_1) ) = 2x_1 + 2 202.20/69.82 POL( U81_1(x_1) ) = max{0, -2} 202.20/69.82 POL( nil ) = 0 202.20/69.82 POL( MARK_1(x_1) ) = max{0, x_1 - 1} 202.20/69.82 202.20/69.82 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.82 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 202.20/69.82 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (215) 202.20/69.82 Obligation: 202.20/69.82 Q DP problem: 202.20/69.82 The TRS P consists of the following rules: 202.20/69.82 202.20/69.82 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.82 MARK(U42(X)) -> MARK(X) 202.20/69.82 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.82 MARK(U52(X)) -> MARK(X) 202.20/69.82 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 202.20/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.82 MARK(s(X)) -> MARK(X) 202.20/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.82 202.20/69.82 The TRS R consists of the following rules: 202.20/69.82 202.20/69.82 mark(zeros) -> active(zeros) 202.20/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.82 active(zeros) -> mark(cons(0, zeros)) 202.20/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.82 mark(s(X)) -> active(s(mark(X))) 202.20/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.82 mark(0) -> active(0) 202.20/69.82 mark(tt) -> active(tt) 202.20/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.82 mark(isNat(X)) -> active(isNat(X)) 202.20/69.82 mark(length(X)) -> active(length(mark(X))) 202.20/69.82 mark(nil) -> active(nil) 202.20/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.82 take(mark(X1), X2) -> take(X1, X2) 202.20/69.82 take(active(X1), X2) -> take(X1, X2) 202.20/69.82 take(X1, active(X2)) -> take(X1, X2) 202.20/69.82 active(U11(tt)) -> mark(tt) 202.20/69.82 active(U21(tt)) -> mark(tt) 202.20/69.82 active(U31(tt)) -> mark(tt) 202.20/69.82 active(U42(tt)) -> mark(tt) 202.20/69.82 active(U52(tt)) -> mark(tt) 202.20/69.82 active(U62(tt)) -> mark(tt) 202.20/69.82 active(isNat(0)) -> mark(tt) 202.20/69.82 active(isNatIList(zeros)) -> mark(tt) 202.20/69.82 active(isNatList(nil)) -> mark(tt) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.82 U42(active(X)) -> U42(X) 202.20/69.82 U42(mark(X)) -> U42(X) 202.20/69.82 U52(active(X)) -> U52(X) 202.20/69.82 U52(mark(X)) -> U52(X) 202.20/69.82 U62(active(X)) -> U62(X) 202.20/69.82 U62(mark(X)) -> U62(X) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 s(active(X)) -> s(X) 202.20/69.82 s(mark(X)) -> s(X) 202.20/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U11(active(X)) -> U11(X) 202.20/69.82 U11(mark(X)) -> U11(X) 202.20/69.82 U21(active(X)) -> U21(X) 202.20/69.82 U21(mark(X)) -> U21(X) 202.20/69.82 U31(active(X)) -> U31(X) 202.20/69.82 U31(mark(X)) -> U31(X) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 U81(active(X)) -> U81(X) 202.20/69.82 U81(mark(X)) -> U81(X) 202.20/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 202.20/69.82 The set Q consists of the following terms: 202.20/69.82 202.20/69.82 active(zeros) 202.20/69.82 active(U11(tt)) 202.20/69.82 active(U21(tt)) 202.20/69.82 active(U31(tt)) 202.20/69.82 active(U41(tt, x0)) 202.20/69.82 active(U42(tt)) 202.20/69.82 active(U51(tt, x0)) 202.20/69.82 active(U52(tt)) 202.20/69.82 active(U61(tt, x0)) 202.20/69.82 active(U62(tt)) 202.20/69.82 active(U71(tt, x0, x1)) 202.20/69.82 active(U72(tt, x0)) 202.20/69.82 active(U81(tt)) 202.20/69.82 active(U91(tt, x0, x1, x2)) 202.20/69.82 active(U92(tt, x0, x1, x2)) 202.20/69.82 active(U93(tt, x0, x1, x2)) 202.20/69.82 active(isNat(0)) 202.20/69.82 active(isNat(length(x0))) 202.20/69.82 active(isNat(s(x0))) 202.20/69.82 active(isNatIList(x0)) 202.20/69.82 active(isNatList(nil)) 202.20/69.82 active(isNatList(cons(x0, x1))) 202.20/69.82 active(isNatList(take(x0, x1))) 202.20/69.82 active(length(nil)) 202.20/69.82 active(length(cons(x0, x1))) 202.20/69.82 active(take(0, x0)) 202.20/69.82 active(take(s(x0), cons(x1, x2))) 202.20/69.82 mark(zeros) 202.20/69.82 mark(cons(x0, x1)) 202.20/69.82 mark(0) 202.20/69.82 mark(U11(x0)) 202.20/69.82 mark(tt) 202.20/69.82 mark(U21(x0)) 202.20/69.82 mark(U31(x0)) 202.20/69.82 mark(U41(x0, x1)) 202.20/69.82 mark(U42(x0)) 202.20/69.82 mark(isNatIList(x0)) 202.20/69.82 mark(U51(x0, x1)) 202.20/69.82 mark(U52(x0)) 202.20/69.82 mark(isNatList(x0)) 202.20/69.82 mark(U61(x0, x1)) 202.20/69.82 mark(U62(x0)) 202.20/69.82 mark(U71(x0, x1, x2)) 202.20/69.82 mark(U72(x0, x1)) 202.20/69.82 mark(isNat(x0)) 202.20/69.82 mark(s(x0)) 202.20/69.82 mark(length(x0)) 202.20/69.82 mark(U81(x0)) 202.20/69.82 mark(nil) 202.20/69.82 mark(U91(x0, x1, x2, x3)) 202.20/69.82 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.20/69.82 U21(mark(x0)) 202.20/69.82 U21(active(x0)) 202.20/69.82 U31(mark(x0)) 202.20/69.82 U31(active(x0)) 202.20/69.82 U41(mark(x0), x1) 202.20/69.82 U41(x0, mark(x1)) 202.20/69.82 U41(active(x0), x1) 202.20/69.82 U41(x0, active(x1)) 202.20/69.82 U42(mark(x0)) 202.20/69.82 U42(active(x0)) 202.20/69.82 isNatIList(mark(x0)) 202.20/69.82 isNatIList(active(x0)) 202.20/69.82 U51(mark(x0), x1) 202.20/69.82 U51(x0, mark(x1)) 202.20/69.82 U51(active(x0), x1) 202.20/69.82 U51(x0, active(x1)) 202.20/69.82 U52(mark(x0)) 202.20/69.82 U52(active(x0)) 202.20/69.82 isNatList(mark(x0)) 202.20/69.82 isNatList(active(x0)) 202.20/69.82 U61(mark(x0), x1) 202.20/69.82 U61(x0, mark(x1)) 202.20/69.82 U61(active(x0), x1) 202.20/69.82 U61(x0, active(x1)) 202.20/69.82 U62(mark(x0)) 202.20/69.82 U62(active(x0)) 202.20/69.82 U71(mark(x0), x1, x2) 202.20/69.82 U71(x0, mark(x1), x2) 202.20/69.82 U71(x0, x1, mark(x2)) 202.20/69.82 U71(active(x0), x1, x2) 202.20/69.82 U71(x0, active(x1), x2) 202.20/69.82 U71(x0, x1, active(x2)) 202.20/69.82 U72(mark(x0), x1) 202.20/69.82 U72(x0, mark(x1)) 202.20/69.82 U72(active(x0), x1) 202.20/69.82 U72(x0, active(x1)) 202.20/69.82 isNat(mark(x0)) 202.20/69.82 isNat(active(x0)) 202.20/69.82 s(mark(x0)) 202.20/69.82 s(active(x0)) 202.20/69.82 length(mark(x0)) 202.20/69.82 length(active(x0)) 202.20/69.82 U81(mark(x0)) 202.20/69.82 U81(active(x0)) 202.20/69.82 U91(mark(x0), x1, x2, x3) 202.20/69.82 U91(x0, mark(x1), x2, x3) 202.20/69.82 U91(x0, x1, mark(x2), x3) 202.20/69.82 U91(x0, x1, x2, mark(x3)) 202.20/69.82 U91(active(x0), x1, x2, x3) 202.20/69.82 U91(x0, active(x1), x2, x3) 202.20/69.82 U91(x0, x1, active(x2), x3) 202.20/69.82 U91(x0, x1, x2, active(x3)) 202.20/69.82 U92(mark(x0), x1, x2, x3) 202.20/69.82 U92(x0, mark(x1), x2, x3) 202.20/69.82 U92(x0, x1, mark(x2), x3) 202.20/69.82 U92(x0, x1, x2, mark(x3)) 202.20/69.82 U92(active(x0), x1, x2, x3) 202.20/69.82 U92(x0, active(x1), x2, x3) 202.20/69.82 U92(x0, x1, active(x2), x3) 202.20/69.82 U92(x0, x1, x2, active(x3)) 202.20/69.82 U93(mark(x0), x1, x2, x3) 202.20/69.82 U93(x0, mark(x1), x2, x3) 202.20/69.82 U93(x0, x1, mark(x2), x3) 202.20/69.82 U93(x0, x1, x2, mark(x3)) 202.20/69.82 U93(active(x0), x1, x2, x3) 202.20/69.82 U93(x0, active(x1), x2, x3) 202.20/69.82 U93(x0, x1, active(x2), x3) 202.20/69.82 U93(x0, x1, x2, active(x3)) 202.20/69.82 take(mark(x0), x1) 202.20/69.82 take(x0, mark(x1)) 202.20/69.82 take(active(x0), x1) 202.20/69.82 take(x0, active(x1)) 202.20/69.82 202.20/69.82 We have to consider all minimal (P,Q,R)-chains. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (216) DependencyGraphProof (EQUIVALENT) 202.20/69.82 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (217) 202.20/69.82 Obligation: 202.20/69.82 Q DP problem: 202.20/69.82 The TRS P consists of the following rules: 202.20/69.82 202.20/69.82 MARK(U42(X)) -> MARK(X) 202.20/69.82 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.82 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.82 MARK(U52(X)) -> MARK(X) 202.20/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.82 MARK(s(X)) -> MARK(X) 202.20/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.82 202.20/69.82 The TRS R consists of the following rules: 202.20/69.82 202.20/69.82 mark(zeros) -> active(zeros) 202.20/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.82 active(zeros) -> mark(cons(0, zeros)) 202.20/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.82 mark(s(X)) -> active(s(mark(X))) 202.20/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.82 mark(0) -> active(0) 202.20/69.82 mark(tt) -> active(tt) 202.20/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.82 mark(isNat(X)) -> active(isNat(X)) 202.20/69.82 mark(length(X)) -> active(length(mark(X))) 202.20/69.82 mark(nil) -> active(nil) 202.20/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.82 take(mark(X1), X2) -> take(X1, X2) 202.20/69.82 take(active(X1), X2) -> take(X1, X2) 202.20/69.82 take(X1, active(X2)) -> take(X1, X2) 202.20/69.82 active(U11(tt)) -> mark(tt) 202.20/69.82 active(U21(tt)) -> mark(tt) 202.20/69.82 active(U31(tt)) -> mark(tt) 202.20/69.82 active(U42(tt)) -> mark(tt) 202.20/69.82 active(U52(tt)) -> mark(tt) 202.20/69.82 active(U62(tt)) -> mark(tt) 202.20/69.82 active(isNat(0)) -> mark(tt) 202.20/69.82 active(isNatIList(zeros)) -> mark(tt) 202.20/69.82 active(isNatList(nil)) -> mark(tt) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.82 U42(active(X)) -> U42(X) 202.20/69.82 U42(mark(X)) -> U42(X) 202.20/69.82 U52(active(X)) -> U52(X) 202.20/69.82 U52(mark(X)) -> U52(X) 202.20/69.82 U62(active(X)) -> U62(X) 202.20/69.82 U62(mark(X)) -> U62(X) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 s(active(X)) -> s(X) 202.20/69.82 s(mark(X)) -> s(X) 202.20/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U11(active(X)) -> U11(X) 202.20/69.82 U11(mark(X)) -> U11(X) 202.20/69.82 U21(active(X)) -> U21(X) 202.20/69.82 U21(mark(X)) -> U21(X) 202.20/69.82 U31(active(X)) -> U31(X) 202.20/69.82 U31(mark(X)) -> U31(X) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 U81(active(X)) -> U81(X) 202.20/69.82 U81(mark(X)) -> U81(X) 202.20/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 202.20/69.82 The set Q consists of the following terms: 202.20/69.82 202.20/69.82 active(zeros) 202.20/69.82 active(U11(tt)) 202.20/69.82 active(U21(tt)) 202.20/69.82 active(U31(tt)) 202.20/69.82 active(U41(tt, x0)) 202.20/69.82 active(U42(tt)) 202.20/69.82 active(U51(tt, x0)) 202.20/69.82 active(U52(tt)) 202.20/69.82 active(U61(tt, x0)) 202.20/69.82 active(U62(tt)) 202.20/69.82 active(U71(tt, x0, x1)) 202.20/69.82 active(U72(tt, x0)) 202.20/69.82 active(U81(tt)) 202.20/69.82 active(U91(tt, x0, x1, x2)) 202.20/69.82 active(U92(tt, x0, x1, x2)) 202.20/69.82 active(U93(tt, x0, x1, x2)) 202.20/69.82 active(isNat(0)) 202.20/69.82 active(isNat(length(x0))) 202.20/69.82 active(isNat(s(x0))) 202.20/69.82 active(isNatIList(x0)) 202.20/69.82 active(isNatList(nil)) 202.20/69.82 active(isNatList(cons(x0, x1))) 202.20/69.82 active(isNatList(take(x0, x1))) 202.20/69.82 active(length(nil)) 202.20/69.82 active(length(cons(x0, x1))) 202.20/69.82 active(take(0, x0)) 202.20/69.82 active(take(s(x0), cons(x1, x2))) 202.20/69.82 mark(zeros) 202.20/69.82 mark(cons(x0, x1)) 202.20/69.82 mark(0) 202.20/69.82 mark(U11(x0)) 202.20/69.82 mark(tt) 202.20/69.82 mark(U21(x0)) 202.20/69.82 mark(U31(x0)) 202.20/69.82 mark(U41(x0, x1)) 202.20/69.82 mark(U42(x0)) 202.20/69.82 mark(isNatIList(x0)) 202.20/69.82 mark(U51(x0, x1)) 202.20/69.82 mark(U52(x0)) 202.20/69.82 mark(isNatList(x0)) 202.20/69.82 mark(U61(x0, x1)) 202.20/69.82 mark(U62(x0)) 202.20/69.82 mark(U71(x0, x1, x2)) 202.20/69.82 mark(U72(x0, x1)) 202.20/69.82 mark(isNat(x0)) 202.20/69.82 mark(s(x0)) 202.20/69.82 mark(length(x0)) 202.20/69.82 mark(U81(x0)) 202.20/69.82 mark(nil) 202.20/69.82 mark(U91(x0, x1, x2, x3)) 202.20/69.82 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.20/69.82 U21(mark(x0)) 202.20/69.82 U21(active(x0)) 202.20/69.82 U31(mark(x0)) 202.20/69.82 U31(active(x0)) 202.20/69.82 U41(mark(x0), x1) 202.20/69.82 U41(x0, mark(x1)) 202.20/69.82 U41(active(x0), x1) 202.20/69.82 U41(x0, active(x1)) 202.20/69.82 U42(mark(x0)) 202.20/69.82 U42(active(x0)) 202.20/69.82 isNatIList(mark(x0)) 202.20/69.82 isNatIList(active(x0)) 202.20/69.82 U51(mark(x0), x1) 202.20/69.82 U51(x0, mark(x1)) 202.20/69.82 U51(active(x0), x1) 202.20/69.82 U51(x0, active(x1)) 202.20/69.82 U52(mark(x0)) 202.20/69.82 U52(active(x0)) 202.20/69.82 isNatList(mark(x0)) 202.20/69.82 isNatList(active(x0)) 202.20/69.82 U61(mark(x0), x1) 202.20/69.82 U61(x0, mark(x1)) 202.20/69.82 U61(active(x0), x1) 202.20/69.82 U61(x0, active(x1)) 202.20/69.82 U62(mark(x0)) 202.20/69.82 U62(active(x0)) 202.20/69.82 U71(mark(x0), x1, x2) 202.20/69.82 U71(x0, mark(x1), x2) 202.20/69.82 U71(x0, x1, mark(x2)) 202.20/69.82 U71(active(x0), x1, x2) 202.20/69.82 U71(x0, active(x1), x2) 202.20/69.82 U71(x0, x1, active(x2)) 202.20/69.82 U72(mark(x0), x1) 202.20/69.82 U72(x0, mark(x1)) 202.20/69.82 U72(active(x0), x1) 202.20/69.82 U72(x0, active(x1)) 202.20/69.82 isNat(mark(x0)) 202.20/69.82 isNat(active(x0)) 202.20/69.82 s(mark(x0)) 202.20/69.82 s(active(x0)) 202.20/69.82 length(mark(x0)) 202.20/69.82 length(active(x0)) 202.20/69.82 U81(mark(x0)) 202.20/69.82 U81(active(x0)) 202.20/69.82 U91(mark(x0), x1, x2, x3) 202.20/69.82 U91(x0, mark(x1), x2, x3) 202.20/69.82 U91(x0, x1, mark(x2), x3) 202.20/69.82 U91(x0, x1, x2, mark(x3)) 202.20/69.82 U91(active(x0), x1, x2, x3) 202.20/69.82 U91(x0, active(x1), x2, x3) 202.20/69.82 U91(x0, x1, active(x2), x3) 202.20/69.82 U91(x0, x1, x2, active(x3)) 202.20/69.82 U92(mark(x0), x1, x2, x3) 202.20/69.82 U92(x0, mark(x1), x2, x3) 202.20/69.82 U92(x0, x1, mark(x2), x3) 202.20/69.82 U92(x0, x1, x2, mark(x3)) 202.20/69.82 U92(active(x0), x1, x2, x3) 202.20/69.82 U92(x0, active(x1), x2, x3) 202.20/69.82 U92(x0, x1, active(x2), x3) 202.20/69.82 U92(x0, x1, x2, active(x3)) 202.20/69.82 U93(mark(x0), x1, x2, x3) 202.20/69.82 U93(x0, mark(x1), x2, x3) 202.20/69.82 U93(x0, x1, mark(x2), x3) 202.20/69.82 U93(x0, x1, x2, mark(x3)) 202.20/69.82 U93(active(x0), x1, x2, x3) 202.20/69.82 U93(x0, active(x1), x2, x3) 202.20/69.82 U93(x0, x1, active(x2), x3) 202.20/69.82 U93(x0, x1, x2, active(x3)) 202.20/69.82 take(mark(x0), x1) 202.20/69.82 take(x0, mark(x1)) 202.20/69.82 take(active(x0), x1) 202.20/69.82 take(x0, active(x1)) 202.20/69.82 202.20/69.82 We have to consider all minimal (P,Q,R)-chains. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (218) QDPOrderProof (EQUIVALENT) 202.20/69.82 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.82 202.20/69.82 202.20/69.82 The following pairs can be oriented strictly and are deleted. 202.20/69.82 202.20/69.82 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 202.20/69.82 The remaining pairs can at least be oriented weakly. 202.20/69.82 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.82 202.20/69.82 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.20/69.82 POL( U41_2(x_1, x_2) ) = x_2 + 2 202.20/69.82 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.82 POL( U72_2(x_1, x_2) ) = 2x_1 + 1 202.20/69.82 POL( length_1(x_1) ) = max{0, -2} 202.20/69.82 POL( mark_1(x_1) ) = max{0, -2} 202.20/69.82 POL( zeros ) = 0 202.20/69.82 POL( active_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( cons_2(x_1, x_2) ) = max{0, x_2 - 2} 202.20/69.82 POL( 0 ) = 0 202.20/69.82 POL( tt ) = 1 202.20/69.82 POL( U42_1(x_1) ) = x_1 + 1 202.20/69.82 POL( isNatIList_1(x_1) ) = 0 202.20/69.82 POL( U52_1(x_1) ) = 2x_1 + 1 202.20/69.82 POL( isNatList_1(x_1) ) = 0 202.20/69.82 POL( U61_2(x_1, x_2) ) = 2x_2 + 2 202.20/69.82 POL( U62_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( isNat_1(x_1) ) = 0 202.20/69.82 POL( s_1(x_1) ) = x_1 + 1 202.20/69.82 POL( U91_4(x_1, ..., x_4) ) = max{0, 2x_1 + x_2 + x_3 + 2x_4 - 2} 202.20/69.82 POL( U92_4(x_1, ..., x_4) ) = max{0, 2x_3 - 2} 202.20/69.82 POL( U93_4(x_1, ..., x_4) ) = max{0, 2x_2 + 2x_3 + 2x_4 - 2} 202.20/69.82 POL( take_2(x_1, x_2) ) = 1 202.20/69.82 POL( U11_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U21_1(x_1) ) = 2 202.20/69.82 POL( U31_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U81_1(x_1) ) = max{0, x_1 - 2} 202.20/69.82 POL( nil ) = 0 202.20/69.82 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 202.20/69.82 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.82 none 202.20/69.82 202.20/69.82 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (219) 202.20/69.82 Obligation: 202.20/69.82 Q DP problem: 202.20/69.82 The TRS P consists of the following rules: 202.20/69.82 202.20/69.82 MARK(U42(X)) -> MARK(X) 202.20/69.82 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.82 MARK(U52(X)) -> MARK(X) 202.20/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.82 MARK(s(X)) -> MARK(X) 202.20/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.82 202.20/69.82 The TRS R consists of the following rules: 202.20/69.82 202.20/69.82 mark(zeros) -> active(zeros) 202.20/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.82 active(zeros) -> mark(cons(0, zeros)) 202.20/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.82 mark(s(X)) -> active(s(mark(X))) 202.20/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.82 mark(0) -> active(0) 202.20/69.82 mark(tt) -> active(tt) 202.20/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.82 mark(isNat(X)) -> active(isNat(X)) 202.20/69.82 mark(length(X)) -> active(length(mark(X))) 202.20/69.82 mark(nil) -> active(nil) 202.20/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.82 take(mark(X1), X2) -> take(X1, X2) 202.20/69.82 take(active(X1), X2) -> take(X1, X2) 202.20/69.82 take(X1, active(X2)) -> take(X1, X2) 202.20/69.82 active(U11(tt)) -> mark(tt) 202.20/69.82 active(U21(tt)) -> mark(tt) 202.20/69.82 active(U31(tt)) -> mark(tt) 202.20/69.82 active(U42(tt)) -> mark(tt) 202.20/69.82 active(U52(tt)) -> mark(tt) 202.20/69.82 active(U62(tt)) -> mark(tt) 202.20/69.82 active(isNat(0)) -> mark(tt) 202.20/69.82 active(isNatIList(zeros)) -> mark(tt) 202.20/69.82 active(isNatList(nil)) -> mark(tt) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.82 U42(active(X)) -> U42(X) 202.20/69.82 U42(mark(X)) -> U42(X) 202.20/69.82 U52(active(X)) -> U52(X) 202.20/69.82 U52(mark(X)) -> U52(X) 202.20/69.82 U62(active(X)) -> U62(X) 202.20/69.82 U62(mark(X)) -> U62(X) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 s(active(X)) -> s(X) 202.20/69.82 s(mark(X)) -> s(X) 202.20/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U11(active(X)) -> U11(X) 202.20/69.82 U11(mark(X)) -> U11(X) 202.20/69.82 U21(active(X)) -> U21(X) 202.20/69.82 U21(mark(X)) -> U21(X) 202.20/69.82 U31(active(X)) -> U31(X) 202.20/69.82 U31(mark(X)) -> U31(X) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 U81(active(X)) -> U81(X) 202.20/69.82 U81(mark(X)) -> U81(X) 202.20/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 202.20/69.82 The set Q consists of the following terms: 202.20/69.82 202.20/69.82 active(zeros) 202.20/69.82 active(U11(tt)) 202.20/69.82 active(U21(tt)) 202.20/69.82 active(U31(tt)) 202.20/69.82 active(U41(tt, x0)) 202.20/69.82 active(U42(tt)) 202.20/69.82 active(U51(tt, x0)) 202.20/69.82 active(U52(tt)) 202.20/69.82 active(U61(tt, x0)) 202.20/69.82 active(U62(tt)) 202.20/69.82 active(U71(tt, x0, x1)) 202.20/69.82 active(U72(tt, x0)) 202.20/69.82 active(U81(tt)) 202.20/69.82 active(U91(tt, x0, x1, x2)) 202.20/69.82 active(U92(tt, x0, x1, x2)) 202.20/69.82 active(U93(tt, x0, x1, x2)) 202.20/69.82 active(isNat(0)) 202.20/69.82 active(isNat(length(x0))) 202.20/69.82 active(isNat(s(x0))) 202.20/69.82 active(isNatIList(x0)) 202.20/69.82 active(isNatList(nil)) 202.20/69.82 active(isNatList(cons(x0, x1))) 202.20/69.82 active(isNatList(take(x0, x1))) 202.20/69.82 active(length(nil)) 202.20/69.82 active(length(cons(x0, x1))) 202.20/69.82 active(take(0, x0)) 202.20/69.82 active(take(s(x0), cons(x1, x2))) 202.20/69.82 mark(zeros) 202.20/69.82 mark(cons(x0, x1)) 202.20/69.82 mark(0) 202.20/69.82 mark(U11(x0)) 202.20/69.82 mark(tt) 202.20/69.82 mark(U21(x0)) 202.20/69.82 mark(U31(x0)) 202.20/69.82 mark(U41(x0, x1)) 202.20/69.82 mark(U42(x0)) 202.20/69.82 mark(isNatIList(x0)) 202.20/69.82 mark(U51(x0, x1)) 202.20/69.82 mark(U52(x0)) 202.20/69.82 mark(isNatList(x0)) 202.20/69.82 mark(U61(x0, x1)) 202.20/69.82 mark(U62(x0)) 202.20/69.82 mark(U71(x0, x1, x2)) 202.20/69.82 mark(U72(x0, x1)) 202.20/69.82 mark(isNat(x0)) 202.20/69.82 mark(s(x0)) 202.20/69.82 mark(length(x0)) 202.20/69.82 mark(U81(x0)) 202.20/69.82 mark(nil) 202.20/69.82 mark(U91(x0, x1, x2, x3)) 202.20/69.82 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.20/69.82 U21(mark(x0)) 202.20/69.82 U21(active(x0)) 202.20/69.82 U31(mark(x0)) 202.20/69.82 U31(active(x0)) 202.20/69.82 U41(mark(x0), x1) 202.20/69.82 U41(x0, mark(x1)) 202.20/69.82 U41(active(x0), x1) 202.20/69.82 U41(x0, active(x1)) 202.20/69.82 U42(mark(x0)) 202.20/69.82 U42(active(x0)) 202.20/69.82 isNatIList(mark(x0)) 202.20/69.82 isNatIList(active(x0)) 202.20/69.82 U51(mark(x0), x1) 202.20/69.82 U51(x0, mark(x1)) 202.20/69.82 U51(active(x0), x1) 202.20/69.82 U51(x0, active(x1)) 202.20/69.82 U52(mark(x0)) 202.20/69.82 U52(active(x0)) 202.20/69.82 isNatList(mark(x0)) 202.20/69.82 isNatList(active(x0)) 202.20/69.82 U61(mark(x0), x1) 202.20/69.82 U61(x0, mark(x1)) 202.20/69.82 U61(active(x0), x1) 202.20/69.82 U61(x0, active(x1)) 202.20/69.82 U62(mark(x0)) 202.20/69.82 U62(active(x0)) 202.20/69.82 U71(mark(x0), x1, x2) 202.20/69.82 U71(x0, mark(x1), x2) 202.20/69.82 U71(x0, x1, mark(x2)) 202.20/69.82 U71(active(x0), x1, x2) 202.20/69.82 U71(x0, active(x1), x2) 202.20/69.82 U71(x0, x1, active(x2)) 202.20/69.82 U72(mark(x0), x1) 202.20/69.82 U72(x0, mark(x1)) 202.20/69.82 U72(active(x0), x1) 202.20/69.82 U72(x0, active(x1)) 202.20/69.82 isNat(mark(x0)) 202.20/69.82 isNat(active(x0)) 202.20/69.82 s(mark(x0)) 202.20/69.82 s(active(x0)) 202.20/69.82 length(mark(x0)) 202.20/69.82 length(active(x0)) 202.20/69.82 U81(mark(x0)) 202.20/69.82 U81(active(x0)) 202.20/69.82 U91(mark(x0), x1, x2, x3) 202.20/69.82 U91(x0, mark(x1), x2, x3) 202.20/69.82 U91(x0, x1, mark(x2), x3) 202.20/69.82 U91(x0, x1, x2, mark(x3)) 202.20/69.82 U91(active(x0), x1, x2, x3) 202.20/69.82 U91(x0, active(x1), x2, x3) 202.20/69.82 U91(x0, x1, active(x2), x3) 202.20/69.82 U91(x0, x1, x2, active(x3)) 202.20/69.82 U92(mark(x0), x1, x2, x3) 202.20/69.82 U92(x0, mark(x1), x2, x3) 202.20/69.82 U92(x0, x1, mark(x2), x3) 202.20/69.82 U92(x0, x1, x2, mark(x3)) 202.20/69.82 U92(active(x0), x1, x2, x3) 202.20/69.82 U92(x0, active(x1), x2, x3) 202.20/69.82 U92(x0, x1, active(x2), x3) 202.20/69.82 U92(x0, x1, x2, active(x3)) 202.20/69.82 U93(mark(x0), x1, x2, x3) 202.20/69.82 U93(x0, mark(x1), x2, x3) 202.20/69.82 U93(x0, x1, mark(x2), x3) 202.20/69.82 U93(x0, x1, x2, mark(x3)) 202.20/69.82 U93(active(x0), x1, x2, x3) 202.20/69.82 U93(x0, active(x1), x2, x3) 202.20/69.82 U93(x0, x1, active(x2), x3) 202.20/69.82 U93(x0, x1, x2, active(x3)) 202.20/69.82 take(mark(x0), x1) 202.20/69.82 take(x0, mark(x1)) 202.20/69.82 take(active(x0), x1) 202.20/69.82 take(x0, active(x1)) 202.20/69.82 202.20/69.82 We have to consider all minimal (P,Q,R)-chains. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (220) QDPOrderProof (EQUIVALENT) 202.20/69.82 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.82 202.20/69.82 202.20/69.82 The following pairs can be oriented strictly and are deleted. 202.20/69.82 202.20/69.82 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 202.20/69.82 The remaining pairs can at least be oriented weakly. 202.20/69.82 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.82 202.20/69.82 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( U71_3(x_1, ..., x_3) ) = 0 202.20/69.82 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( length_1(x_1) ) = max{0, -2} 202.20/69.82 POL( mark_1(x_1) ) = 2 202.20/69.82 POL( zeros ) = 0 202.20/69.82 POL( active_1(x_1) ) = max{0, x_1 - 2} 202.20/69.82 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.20/69.82 POL( 0 ) = 0 202.20/69.82 POL( U41_2(x_1, x_2) ) = 2x_1 + 2 202.20/69.82 POL( tt ) = 2 202.20/69.82 POL( U42_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( isNatIList_1(x_1) ) = 0 202.20/69.82 POL( U52_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( isNatList_1(x_1) ) = 0 202.20/69.82 POL( U61_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.20/69.82 POL( U62_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( isNat_1(x_1) ) = 2 202.20/69.82 POL( s_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U91_4(x_1, ..., x_4) ) = 2x_2 + 2x_3 + x_4 + 2 202.20/69.82 POL( U92_4(x_1, ..., x_4) ) = x_2 + x_3 + x_4 + 1 202.20/69.82 POL( U93_4(x_1, ..., x_4) ) = 2x_2 + 2 202.20/69.82 POL( take_2(x_1, x_2) ) = 2x_1 + 2 202.20/69.82 POL( U11_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U21_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U31_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U81_1(x_1) ) = 2 202.20/69.82 POL( nil ) = 0 202.20/69.82 POL( MARK_1(x_1) ) = max{0, -2} 202.20/69.82 202.20/69.82 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.82 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 202.20/69.82 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (221) 202.20/69.82 Obligation: 202.20/69.82 Q DP problem: 202.20/69.82 The TRS P consists of the following rules: 202.20/69.82 202.20/69.82 MARK(U42(X)) -> MARK(X) 202.20/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.82 MARK(U52(X)) -> MARK(X) 202.20/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.82 MARK(s(X)) -> MARK(X) 202.20/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.82 202.20/69.82 The TRS R consists of the following rules: 202.20/69.82 202.20/69.82 mark(zeros) -> active(zeros) 202.20/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.82 active(zeros) -> mark(cons(0, zeros)) 202.20/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.82 mark(s(X)) -> active(s(mark(X))) 202.20/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.82 mark(0) -> active(0) 202.20/69.82 mark(tt) -> active(tt) 202.20/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.82 mark(isNat(X)) -> active(isNat(X)) 202.20/69.82 mark(length(X)) -> active(length(mark(X))) 202.20/69.82 mark(nil) -> active(nil) 202.20/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.82 take(mark(X1), X2) -> take(X1, X2) 202.20/69.82 take(active(X1), X2) -> take(X1, X2) 202.20/69.82 take(X1, active(X2)) -> take(X1, X2) 202.20/69.82 active(U11(tt)) -> mark(tt) 202.20/69.82 active(U21(tt)) -> mark(tt) 202.20/69.82 active(U31(tt)) -> mark(tt) 202.20/69.82 active(U42(tt)) -> mark(tt) 202.20/69.82 active(U52(tt)) -> mark(tt) 202.20/69.82 active(U62(tt)) -> mark(tt) 202.20/69.82 active(isNat(0)) -> mark(tt) 202.20/69.82 active(isNatIList(zeros)) -> mark(tt) 202.20/69.82 active(isNatList(nil)) -> mark(tt) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.82 U42(active(X)) -> U42(X) 202.20/69.82 U42(mark(X)) -> U42(X) 202.20/69.82 U52(active(X)) -> U52(X) 202.20/69.82 U52(mark(X)) -> U52(X) 202.20/69.82 U62(active(X)) -> U62(X) 202.20/69.82 U62(mark(X)) -> U62(X) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 s(active(X)) -> s(X) 202.20/69.82 s(mark(X)) -> s(X) 202.20/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U11(active(X)) -> U11(X) 202.20/69.82 U11(mark(X)) -> U11(X) 202.20/69.82 U21(active(X)) -> U21(X) 202.20/69.82 U21(mark(X)) -> U21(X) 202.20/69.82 U31(active(X)) -> U31(X) 202.20/69.82 U31(mark(X)) -> U31(X) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 U81(active(X)) -> U81(X) 202.20/69.82 U81(mark(X)) -> U81(X) 202.20/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 202.20/69.82 The set Q consists of the following terms: 202.20/69.82 202.20/69.82 active(zeros) 202.20/69.82 active(U11(tt)) 202.20/69.82 active(U21(tt)) 202.20/69.82 active(U31(tt)) 202.20/69.82 active(U41(tt, x0)) 202.20/69.82 active(U42(tt)) 202.20/69.82 active(U51(tt, x0)) 202.20/69.82 active(U52(tt)) 202.20/69.82 active(U61(tt, x0)) 202.20/69.82 active(U62(tt)) 202.20/69.82 active(U71(tt, x0, x1)) 202.20/69.82 active(U72(tt, x0)) 202.20/69.82 active(U81(tt)) 202.20/69.82 active(U91(tt, x0, x1, x2)) 202.20/69.82 active(U92(tt, x0, x1, x2)) 202.20/69.82 active(U93(tt, x0, x1, x2)) 202.20/69.82 active(isNat(0)) 202.20/69.82 active(isNat(length(x0))) 202.20/69.82 active(isNat(s(x0))) 202.20/69.82 active(isNatIList(x0)) 202.20/69.82 active(isNatList(nil)) 202.20/69.82 active(isNatList(cons(x0, x1))) 202.20/69.82 active(isNatList(take(x0, x1))) 202.20/69.82 active(length(nil)) 202.20/69.82 active(length(cons(x0, x1))) 202.20/69.82 active(take(0, x0)) 202.20/69.82 active(take(s(x0), cons(x1, x2))) 202.20/69.82 mark(zeros) 202.20/69.82 mark(cons(x0, x1)) 202.20/69.82 mark(0) 202.20/69.82 mark(U11(x0)) 202.20/69.82 mark(tt) 202.20/69.82 mark(U21(x0)) 202.20/69.82 mark(U31(x0)) 202.20/69.82 mark(U41(x0, x1)) 202.20/69.82 mark(U42(x0)) 202.20/69.82 mark(isNatIList(x0)) 202.20/69.82 mark(U51(x0, x1)) 202.20/69.82 mark(U52(x0)) 202.20/69.82 mark(isNatList(x0)) 202.20/69.82 mark(U61(x0, x1)) 202.20/69.82 mark(U62(x0)) 202.20/69.82 mark(U71(x0, x1, x2)) 202.20/69.82 mark(U72(x0, x1)) 202.20/69.82 mark(isNat(x0)) 202.20/69.82 mark(s(x0)) 202.20/69.82 mark(length(x0)) 202.20/69.82 mark(U81(x0)) 202.20/69.82 mark(nil) 202.20/69.82 mark(U91(x0, x1, x2, x3)) 202.20/69.82 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.20/69.82 U21(mark(x0)) 202.20/69.82 U21(active(x0)) 202.20/69.82 U31(mark(x0)) 202.20/69.82 U31(active(x0)) 202.20/69.82 U41(mark(x0), x1) 202.20/69.82 U41(x0, mark(x1)) 202.20/69.82 U41(active(x0), x1) 202.20/69.82 U41(x0, active(x1)) 202.20/69.82 U42(mark(x0)) 202.20/69.82 U42(active(x0)) 202.20/69.82 isNatIList(mark(x0)) 202.20/69.82 isNatIList(active(x0)) 202.20/69.82 U51(mark(x0), x1) 202.20/69.82 U51(x0, mark(x1)) 202.20/69.82 U51(active(x0), x1) 202.20/69.82 U51(x0, active(x1)) 202.20/69.82 U52(mark(x0)) 202.20/69.82 U52(active(x0)) 202.20/69.82 isNatList(mark(x0)) 202.20/69.82 isNatList(active(x0)) 202.20/69.82 U61(mark(x0), x1) 202.20/69.82 U61(x0, mark(x1)) 202.20/69.82 U61(active(x0), x1) 202.20/69.82 U61(x0, active(x1)) 202.20/69.82 U62(mark(x0)) 202.20/69.82 U62(active(x0)) 202.20/69.82 U71(mark(x0), x1, x2) 202.20/69.82 U71(x0, mark(x1), x2) 202.20/69.82 U71(x0, x1, mark(x2)) 202.20/69.82 U71(active(x0), x1, x2) 202.20/69.82 U71(x0, active(x1), x2) 202.20/69.82 U71(x0, x1, active(x2)) 202.20/69.82 U72(mark(x0), x1) 202.20/69.82 U72(x0, mark(x1)) 202.20/69.82 U72(active(x0), x1) 202.20/69.82 U72(x0, active(x1)) 202.20/69.82 isNat(mark(x0)) 202.20/69.82 isNat(active(x0)) 202.20/69.82 s(mark(x0)) 202.20/69.82 s(active(x0)) 202.20/69.82 length(mark(x0)) 202.20/69.82 length(active(x0)) 202.20/69.82 U81(mark(x0)) 202.20/69.82 U81(active(x0)) 202.20/69.82 U91(mark(x0), x1, x2, x3) 202.20/69.82 U91(x0, mark(x1), x2, x3) 202.20/69.82 U91(x0, x1, mark(x2), x3) 202.20/69.82 U91(x0, x1, x2, mark(x3)) 202.20/69.82 U91(active(x0), x1, x2, x3) 202.20/69.82 U91(x0, active(x1), x2, x3) 202.20/69.82 U91(x0, x1, active(x2), x3) 202.20/69.82 U91(x0, x1, x2, active(x3)) 202.20/69.82 U92(mark(x0), x1, x2, x3) 202.20/69.82 U92(x0, mark(x1), x2, x3) 202.20/69.82 U92(x0, x1, mark(x2), x3) 202.20/69.82 U92(x0, x1, x2, mark(x3)) 202.20/69.82 U92(active(x0), x1, x2, x3) 202.20/69.82 U92(x0, active(x1), x2, x3) 202.20/69.82 U92(x0, x1, active(x2), x3) 202.20/69.82 U92(x0, x1, x2, active(x3)) 202.20/69.82 U93(mark(x0), x1, x2, x3) 202.20/69.82 U93(x0, mark(x1), x2, x3) 202.20/69.82 U93(x0, x1, mark(x2), x3) 202.20/69.82 U93(x0, x1, x2, mark(x3)) 202.20/69.82 U93(active(x0), x1, x2, x3) 202.20/69.82 U93(x0, active(x1), x2, x3) 202.20/69.82 U93(x0, x1, active(x2), x3) 202.20/69.82 U93(x0, x1, x2, active(x3)) 202.20/69.82 take(mark(x0), x1) 202.20/69.82 take(x0, mark(x1)) 202.20/69.82 take(active(x0), x1) 202.20/69.82 take(x0, active(x1)) 202.20/69.82 202.20/69.82 We have to consider all minimal (P,Q,R)-chains. 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (222) QDPOrderProof (EQUIVALENT) 202.20/69.82 We use the reduction pair processor [LPAR04,JAR06]. 202.20/69.82 202.20/69.82 202.20/69.82 The following pairs can be oriented strictly and are deleted. 202.20/69.82 202.20/69.82 MARK(U42(X)) -> MARK(X) 202.20/69.82 The remaining pairs can at least be oriented weakly. 202.20/69.82 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.20/69.82 202.20/69.82 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.20/69.82 POL( U51_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.20/69.82 POL( U72_2(x_1, x_2) ) = x_1 + 1 202.20/69.82 POL( length_1(x_1) ) = max{0, -2} 202.20/69.82 POL( mark_1(x_1) ) = 0 202.20/69.82 POL( zeros ) = 0 202.20/69.82 POL( active_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.20/69.82 POL( 0 ) = 2 202.20/69.82 POL( U41_2(x_1, x_2) ) = 2 202.20/69.82 POL( tt ) = 1 202.20/69.82 POL( U42_1(x_1) ) = 2x_1 + 2 202.20/69.82 POL( isNatIList_1(x_1) ) = 2 202.20/69.82 POL( U52_1(x_1) ) = x_1 + 1 202.20/69.82 POL( isNatList_1(x_1) ) = 0 202.20/69.82 POL( U61_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.20/69.82 POL( U62_1(x_1) ) = 2 202.20/69.82 POL( isNat_1(x_1) ) = 0 202.20/69.82 POL( s_1(x_1) ) = x_1 + 1 202.20/69.82 POL( U91_4(x_1, ..., x_4) ) = x_3 + 2 202.20/69.82 POL( U92_4(x_1, ..., x_4) ) = max{0, x_2 - 2} 202.20/69.82 POL( U93_4(x_1, ..., x_4) ) = max{0, x_2 + 2x_4 - 2} 202.20/69.82 POL( take_2(x_1, x_2) ) = max{0, -2} 202.20/69.82 POL( U11_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( U21_1(x_1) ) = max{0, x_1 - 2} 202.20/69.82 POL( U31_1(x_1) ) = 2 202.20/69.82 POL( U81_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 POL( nil ) = 0 202.20/69.82 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} 202.20/69.82 202.20/69.82 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.20/69.82 none 202.20/69.82 202.20/69.82 202.20/69.82 ---------------------------------------- 202.20/69.82 202.20/69.82 (223) 202.20/69.82 Obligation: 202.20/69.82 Q DP problem: 202.20/69.82 The TRS P consists of the following rules: 202.20/69.82 202.20/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.20/69.82 MARK(U52(X)) -> MARK(X) 202.20/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.20/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.20/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.20/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.20/69.82 MARK(s(X)) -> MARK(X) 202.20/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.20/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.20/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.20/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.20/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.20/69.82 202.20/69.82 The TRS R consists of the following rules: 202.20/69.82 202.20/69.82 mark(zeros) -> active(zeros) 202.20/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.20/69.82 active(zeros) -> mark(cons(0, zeros)) 202.20/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.20/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.20/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.20/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.20/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.20/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.20/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.20/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.20/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.20/69.82 mark(s(X)) -> active(s(mark(X))) 202.20/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.20/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.20/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.20/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.20/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.20/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.20/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.20/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.20/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.20/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.20/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.20/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.20/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.20/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.20/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.20/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.20/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.20/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.20/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.20/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.20/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.20/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.20/69.82 mark(0) -> active(0) 202.20/69.82 mark(tt) -> active(tt) 202.20/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.20/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.20/69.82 mark(isNat(X)) -> active(isNat(X)) 202.20/69.82 mark(length(X)) -> active(length(mark(X))) 202.20/69.82 mark(nil) -> active(nil) 202.20/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.20/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.20/69.82 take(mark(X1), X2) -> take(X1, X2) 202.20/69.82 take(active(X1), X2) -> take(X1, X2) 202.20/69.82 take(X1, active(X2)) -> take(X1, X2) 202.20/69.82 active(U11(tt)) -> mark(tt) 202.20/69.82 active(U21(tt)) -> mark(tt) 202.20/69.82 active(U31(tt)) -> mark(tt) 202.20/69.82 active(U42(tt)) -> mark(tt) 202.20/69.82 active(U52(tt)) -> mark(tt) 202.20/69.82 active(U62(tt)) -> mark(tt) 202.20/69.82 active(isNat(0)) -> mark(tt) 202.20/69.82 active(isNatIList(zeros)) -> mark(tt) 202.20/69.82 active(isNatList(nil)) -> mark(tt) 202.20/69.82 length(active(X)) -> length(X) 202.20/69.82 length(mark(X)) -> length(X) 202.20/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.20/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.20/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.20/69.82 U42(active(X)) -> U42(X) 202.20/69.82 U42(mark(X)) -> U42(X) 202.20/69.82 U52(active(X)) -> U52(X) 202.20/69.82 U52(mark(X)) -> U52(X) 202.20/69.82 U62(active(X)) -> U62(X) 202.20/69.82 U62(mark(X)) -> U62(X) 202.20/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.20/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.20/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.20/69.82 s(active(X)) -> s(X) 202.20/69.82 s(mark(X)) -> s(X) 202.20/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.20/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.20/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.20/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.20/69.82 U11(active(X)) -> U11(X) 202.20/69.82 U11(mark(X)) -> U11(X) 202.20/69.82 U21(active(X)) -> U21(X) 202.20/69.82 U21(mark(X)) -> U21(X) 202.20/69.82 U31(active(X)) -> U31(X) 202.20/69.82 U31(mark(X)) -> U31(X) 202.20/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.20/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.20/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.20/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.20/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.20/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.20/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.20/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.20/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.20/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.20/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.20/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.20/69.82 U81(active(X)) -> U81(X) 202.20/69.82 U81(mark(X)) -> U81(X) 202.20/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.20/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.20/69.82 202.20/69.82 The set Q consists of the following terms: 202.20/69.82 202.20/69.82 active(zeros) 202.20/69.82 active(U11(tt)) 202.20/69.82 active(U21(tt)) 202.20/69.82 active(U31(tt)) 202.20/69.82 active(U41(tt, x0)) 202.20/69.82 active(U42(tt)) 202.20/69.82 active(U51(tt, x0)) 202.20/69.82 active(U52(tt)) 202.20/69.82 active(U61(tt, x0)) 202.20/69.82 active(U62(tt)) 202.20/69.82 active(U71(tt, x0, x1)) 202.20/69.82 active(U72(tt, x0)) 202.20/69.82 active(U81(tt)) 202.20/69.82 active(U91(tt, x0, x1, x2)) 202.20/69.82 active(U92(tt, x0, x1, x2)) 202.20/69.82 active(U93(tt, x0, x1, x2)) 202.20/69.82 active(isNat(0)) 202.20/69.82 active(isNat(length(x0))) 202.20/69.82 active(isNat(s(x0))) 202.20/69.82 active(isNatIList(x0)) 202.20/69.82 active(isNatList(nil)) 202.20/69.82 active(isNatList(cons(x0, x1))) 202.20/69.82 active(isNatList(take(x0, x1))) 202.20/69.82 active(length(nil)) 202.20/69.82 active(length(cons(x0, x1))) 202.20/69.82 active(take(0, x0)) 202.20/69.82 active(take(s(x0), cons(x1, x2))) 202.20/69.82 mark(zeros) 202.20/69.82 mark(cons(x0, x1)) 202.20/69.82 mark(0) 202.20/69.82 mark(U11(x0)) 202.20/69.82 mark(tt) 202.20/69.82 mark(U21(x0)) 202.20/69.82 mark(U31(x0)) 202.20/69.82 mark(U41(x0, x1)) 202.20/69.82 mark(U42(x0)) 202.20/69.82 mark(isNatIList(x0)) 202.20/69.82 mark(U51(x0, x1)) 202.20/69.82 mark(U52(x0)) 202.20/69.82 mark(isNatList(x0)) 202.20/69.82 mark(U61(x0, x1)) 202.20/69.82 mark(U62(x0)) 202.20/69.82 mark(U71(x0, x1, x2)) 202.20/69.82 mark(U72(x0, x1)) 202.20/69.82 mark(isNat(x0)) 202.20/69.82 mark(s(x0)) 202.20/69.82 mark(length(x0)) 202.20/69.82 mark(U81(x0)) 202.20/69.82 mark(nil) 202.20/69.82 mark(U91(x0, x1, x2, x3)) 202.20/69.82 mark(U92(x0, x1, x2, x3)) 202.20/69.82 mark(U93(x0, x1, x2, x3)) 202.20/69.82 mark(take(x0, x1)) 202.20/69.82 cons(mark(x0), x1) 202.20/69.82 cons(x0, mark(x1)) 202.20/69.82 cons(active(x0), x1) 202.20/69.82 cons(x0, active(x1)) 202.20/69.82 U11(mark(x0)) 202.20/69.82 U11(active(x0)) 202.46/69.82 U21(mark(x0)) 202.46/69.82 U21(active(x0)) 202.46/69.82 U31(mark(x0)) 202.46/69.82 U31(active(x0)) 202.46/69.82 U41(mark(x0), x1) 202.46/69.82 U41(x0, mark(x1)) 202.46/69.82 U41(active(x0), x1) 202.46/69.82 U41(x0, active(x1)) 202.46/69.82 U42(mark(x0)) 202.46/69.82 U42(active(x0)) 202.46/69.82 isNatIList(mark(x0)) 202.46/69.82 isNatIList(active(x0)) 202.46/69.82 U51(mark(x0), x1) 202.46/69.82 U51(x0, mark(x1)) 202.46/69.82 U51(active(x0), x1) 202.46/69.82 U51(x0, active(x1)) 202.46/69.82 U52(mark(x0)) 202.46/69.82 U52(active(x0)) 202.46/69.82 isNatList(mark(x0)) 202.46/69.82 isNatList(active(x0)) 202.46/69.82 U61(mark(x0), x1) 202.46/69.82 U61(x0, mark(x1)) 202.46/69.82 U61(active(x0), x1) 202.46/69.82 U61(x0, active(x1)) 202.46/69.82 U62(mark(x0)) 202.46/69.82 U62(active(x0)) 202.46/69.82 U71(mark(x0), x1, x2) 202.46/69.82 U71(x0, mark(x1), x2) 202.46/69.82 U71(x0, x1, mark(x2)) 202.46/69.82 U71(active(x0), x1, x2) 202.46/69.82 U71(x0, active(x1), x2) 202.46/69.82 U71(x0, x1, active(x2)) 202.46/69.82 U72(mark(x0), x1) 202.46/69.82 U72(x0, mark(x1)) 202.46/69.82 U72(active(x0), x1) 202.46/69.82 U72(x0, active(x1)) 202.46/69.82 isNat(mark(x0)) 202.46/69.82 isNat(active(x0)) 202.46/69.82 s(mark(x0)) 202.46/69.82 s(active(x0)) 202.46/69.82 length(mark(x0)) 202.46/69.82 length(active(x0)) 202.46/69.82 U81(mark(x0)) 202.46/69.82 U81(active(x0)) 202.46/69.82 U91(mark(x0), x1, x2, x3) 202.46/69.82 U91(x0, mark(x1), x2, x3) 202.46/69.82 U91(x0, x1, mark(x2), x3) 202.46/69.82 U91(x0, x1, x2, mark(x3)) 202.46/69.82 U91(active(x0), x1, x2, x3) 202.46/69.82 U91(x0, active(x1), x2, x3) 202.46/69.82 U91(x0, x1, active(x2), x3) 202.46/69.82 U91(x0, x1, x2, active(x3)) 202.46/69.82 U92(mark(x0), x1, x2, x3) 202.46/69.82 U92(x0, mark(x1), x2, x3) 202.46/69.82 U92(x0, x1, mark(x2), x3) 202.46/69.82 U92(x0, x1, x2, mark(x3)) 202.46/69.82 U92(active(x0), x1, x2, x3) 202.46/69.82 U92(x0, active(x1), x2, x3) 202.46/69.82 U92(x0, x1, active(x2), x3) 202.46/69.82 U92(x0, x1, x2, active(x3)) 202.46/69.82 U93(mark(x0), x1, x2, x3) 202.46/69.82 U93(x0, mark(x1), x2, x3) 202.46/69.82 U93(x0, x1, mark(x2), x3) 202.46/69.82 U93(x0, x1, x2, mark(x3)) 202.46/69.82 U93(active(x0), x1, x2, x3) 202.46/69.82 U93(x0, active(x1), x2, x3) 202.46/69.82 U93(x0, x1, active(x2), x3) 202.46/69.82 U93(x0, x1, x2, active(x3)) 202.46/69.82 take(mark(x0), x1) 202.46/69.82 take(x0, mark(x1)) 202.46/69.82 take(active(x0), x1) 202.46/69.82 take(x0, active(x1)) 202.46/69.82 202.46/69.82 We have to consider all minimal (P,Q,R)-chains. 202.46/69.82 ---------------------------------------- 202.46/69.82 202.46/69.82 (224) QDPOrderProof (EQUIVALENT) 202.46/69.82 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.82 202.46/69.82 202.46/69.82 The following pairs can be oriented strictly and are deleted. 202.46/69.82 202.46/69.82 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 202.46/69.82 The remaining pairs can at least be oriented weakly. 202.46/69.82 Used ordering: Combined order from the following AFS and order. 202.46/69.82 ACTIVE(x1) = ACTIVE(x1) 202.46/69.82 202.46/69.82 U51(x1, x2) = U51(x2) 202.46/69.82 202.46/69.82 tt = tt 202.46/69.82 202.46/69.82 MARK(x1) = MARK(x1) 202.46/69.82 202.46/69.82 U52(x1) = x1 202.46/69.82 202.46/69.82 isNatList(x1) = isNatList(x1) 202.46/69.82 202.46/69.82 mark(x1) = mark(x1) 202.46/69.82 202.46/69.82 U71(x1, x2, x3) = U71 202.46/69.82 202.46/69.82 U72(x1, x2) = U72 202.46/69.82 202.46/69.82 isNat(x1) = isNat(x1) 202.46/69.82 202.46/69.82 s(x1) = x1 202.46/69.82 202.46/69.82 length(x1) = length 202.46/69.82 202.46/69.82 cons(x1, x2) = cons(x1, x2) 202.46/69.82 202.46/69.82 zeros = zeros 202.46/69.82 202.46/69.82 active(x1) = active(x1) 202.46/69.82 202.46/69.82 0 = 0 202.46/69.82 202.46/69.82 U41(x1, x2) = U41 202.46/69.82 202.46/69.82 U42(x1) = x1 202.46/69.82 202.46/69.82 isNatIList(x1) = x1 202.46/69.82 202.46/69.82 U61(x1, x2) = U61(x1) 202.46/69.82 202.46/69.82 U62(x1) = U62(x1) 202.46/69.82 202.46/69.82 U91(x1, x2, x3, x4) = U91 202.46/69.82 202.46/69.82 U92(x1, x2, x3, x4) = U92 202.46/69.82 202.46/69.82 U93(x1, x2, x3, x4) = U93(x1, x4) 202.46/69.82 202.46/69.82 take(x1, x2) = x1 202.46/69.82 202.46/69.82 U11(x1) = U11(x1) 202.46/69.82 202.46/69.82 U21(x1) = x1 202.46/69.82 202.46/69.82 U31(x1) = x1 202.46/69.82 202.46/69.82 U81(x1) = U81 202.46/69.82 202.46/69.82 nil = nil 202.46/69.82 202.46/69.82 202.46/69.82 Recursive path order with status [RPO]. 202.46/69.82 Quasi-Precedence: tt > [ACTIVE_1, MARK_1, U71, U72, length] > [isNat_1, U11_1] > [U51_1, isNatList_1] > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 tt > [ACTIVE_1, MARK_1, U71, U72, length] > [isNat_1, U11_1] > [U51_1, isNatList_1] > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 tt > U92 > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 tt > U92 > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 [zeros, 0] > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 [zeros, 0] > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 U41 > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 U41 > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 U81 > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 U81 > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 nil > [mark_1, U62_1, U93_2] > U91 > active_1 > cons_2 202.46/69.82 nil > [mark_1, U62_1, U93_2] > U91 > active_1 > U61_1 202.46/69.82 202.46/69.82 Status: ACTIVE_1: multiset status 202.46/69.82 U51_1: [1] 202.46/69.82 tt: multiset status 202.46/69.82 MARK_1: multiset status 202.46/69.82 isNatList_1: [1] 202.46/69.82 mark_1: multiset status 202.46/69.82 U71: multiset status 202.46/69.82 U72: multiset status 202.46/69.82 isNat_1: multiset status 202.46/69.82 length: multiset status 202.46/69.82 cons_2: multiset status 202.46/69.82 zeros: multiset status 202.46/69.82 active_1: multiset status 202.46/69.82 0: multiset status 202.46/69.82 U41: multiset status 202.46/69.82 U61_1: multiset status 202.46/69.82 U62_1: multiset status 202.46/69.82 U91: multiset status 202.46/69.82 U92: multiset status 202.46/69.82 U93_2: multiset status 202.46/69.82 U11_1: multiset status 202.46/69.82 U81: multiset status 202.46/69.82 nil: multiset status 202.46/69.82 202.46/69.82 202.46/69.82 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.82 202.46/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.82 length(mark(X)) -> length(X) 202.46/69.82 length(active(X)) -> length(X) 202.46/69.82 202.46/69.82 202.46/69.82 ---------------------------------------- 202.46/69.82 202.46/69.82 (225) 202.46/69.82 Obligation: 202.46/69.82 Q DP problem: 202.46/69.82 The TRS P consists of the following rules: 202.46/69.82 202.46/69.82 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.46/69.82 MARK(U52(X)) -> MARK(X) 202.46/69.82 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.46/69.82 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.82 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.82 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.82 MARK(s(X)) -> MARK(X) 202.46/69.82 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 202.46/69.82 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.82 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.82 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.82 202.46/69.82 The TRS R consists of the following rules: 202.46/69.82 202.46/69.82 mark(zeros) -> active(zeros) 202.46/69.82 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.82 active(zeros) -> mark(cons(0, zeros)) 202.46/69.82 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.82 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.82 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.82 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.82 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.82 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.82 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.82 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.82 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.82 mark(s(X)) -> active(s(mark(X))) 202.46/69.82 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.82 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.82 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.82 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.82 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.82 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.82 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.82 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.82 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.82 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.82 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.82 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.82 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.82 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.82 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.82 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.82 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.82 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.82 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.82 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.82 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.82 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.82 mark(0) -> active(0) 202.46/69.82 mark(tt) -> active(tt) 202.46/69.82 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.82 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.82 mark(isNat(X)) -> active(isNat(X)) 202.46/69.82 mark(length(X)) -> active(length(mark(X))) 202.46/69.82 mark(nil) -> active(nil) 202.46/69.82 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.82 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.82 take(mark(X1), X2) -> take(X1, X2) 202.46/69.82 take(active(X1), X2) -> take(X1, X2) 202.46/69.82 take(X1, active(X2)) -> take(X1, X2) 202.46/69.82 active(U11(tt)) -> mark(tt) 202.46/69.82 active(U21(tt)) -> mark(tt) 202.46/69.82 active(U31(tt)) -> mark(tt) 202.46/69.82 active(U42(tt)) -> mark(tt) 202.46/69.82 active(U52(tt)) -> mark(tt) 202.46/69.82 active(U62(tt)) -> mark(tt) 202.46/69.82 active(isNat(0)) -> mark(tt) 202.46/69.82 active(isNatIList(zeros)) -> mark(tt) 202.46/69.82 active(isNatList(nil)) -> mark(tt) 202.46/69.82 length(active(X)) -> length(X) 202.46/69.82 length(mark(X)) -> length(X) 202.46/69.82 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.82 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.82 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.82 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.82 U42(active(X)) -> U42(X) 202.46/69.82 U42(mark(X)) -> U42(X) 202.46/69.82 U52(active(X)) -> U52(X) 202.46/69.82 U52(mark(X)) -> U52(X) 202.46/69.82 U62(active(X)) -> U62(X) 202.46/69.82 U62(mark(X)) -> U62(X) 202.46/69.82 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.82 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.82 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.82 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.82 s(active(X)) -> s(X) 202.46/69.82 s(mark(X)) -> s(X) 202.46/69.82 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.82 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.82 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.82 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.82 U11(active(X)) -> U11(X) 202.46/69.82 U11(mark(X)) -> U11(X) 202.46/69.82 U21(active(X)) -> U21(X) 202.46/69.82 U21(mark(X)) -> U21(X) 202.46/69.82 U31(active(X)) -> U31(X) 202.46/69.82 U31(mark(X)) -> U31(X) 202.46/69.82 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.82 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.82 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.82 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.82 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.82 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.82 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.82 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.82 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.82 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.82 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.82 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.82 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.82 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.82 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.82 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.82 U81(active(X)) -> U81(X) 202.46/69.82 U81(mark(X)) -> U81(X) 202.46/69.82 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.82 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.82 202.46/69.82 The set Q consists of the following terms: 202.46/69.82 202.46/69.82 active(zeros) 202.46/69.82 active(U11(tt)) 202.46/69.82 active(U21(tt)) 202.46/69.82 active(U31(tt)) 202.46/69.82 active(U41(tt, x0)) 202.46/69.82 active(U42(tt)) 202.46/69.82 active(U51(tt, x0)) 202.46/69.82 active(U52(tt)) 202.46/69.82 active(U61(tt, x0)) 202.46/69.82 active(U62(tt)) 202.46/69.82 active(U71(tt, x0, x1)) 202.46/69.82 active(U72(tt, x0)) 202.46/69.82 active(U81(tt)) 202.46/69.82 active(U91(tt, x0, x1, x2)) 202.46/69.82 active(U92(tt, x0, x1, x2)) 202.46/69.82 active(U93(tt, x0, x1, x2)) 202.46/69.82 active(isNat(0)) 202.46/69.82 active(isNat(length(x0))) 202.46/69.82 active(isNat(s(x0))) 202.46/69.82 active(isNatIList(x0)) 202.46/69.82 active(isNatList(nil)) 202.46/69.82 active(isNatList(cons(x0, x1))) 202.46/69.82 active(isNatList(take(x0, x1))) 202.46/69.82 active(length(nil)) 202.46/69.82 active(length(cons(x0, x1))) 202.46/69.82 active(take(0, x0)) 202.46/69.82 active(take(s(x0), cons(x1, x2))) 202.46/69.82 mark(zeros) 202.46/69.82 mark(cons(x0, x1)) 202.46/69.82 mark(0) 202.46/69.82 mark(U11(x0)) 202.46/69.82 mark(tt) 202.46/69.82 mark(U21(x0)) 202.46/69.82 mark(U31(x0)) 202.46/69.82 mark(U41(x0, x1)) 202.46/69.82 mark(U42(x0)) 202.46/69.82 mark(isNatIList(x0)) 202.46/69.82 mark(U51(x0, x1)) 202.46/69.82 mark(U52(x0)) 202.46/69.82 mark(isNatList(x0)) 202.46/69.82 mark(U61(x0, x1)) 202.46/69.82 mark(U62(x0)) 202.46/69.82 mark(U71(x0, x1, x2)) 202.46/69.82 mark(U72(x0, x1)) 202.46/69.82 mark(isNat(x0)) 202.46/69.82 mark(s(x0)) 202.46/69.82 mark(length(x0)) 202.46/69.82 mark(U81(x0)) 202.46/69.82 mark(nil) 202.46/69.82 mark(U91(x0, x1, x2, x3)) 202.46/69.82 mark(U92(x0, x1, x2, x3)) 202.46/69.82 mark(U93(x0, x1, x2, x3)) 202.46/69.82 mark(take(x0, x1)) 202.46/69.82 cons(mark(x0), x1) 202.46/69.82 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (226) DependencyGraphProof (EQUIVALENT) 202.46/69.83 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (227) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 MARK(U52(X)) -> MARK(X) 202.46/69.83 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.46/69.83 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.83 MARK(s(X)) -> MARK(X) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 202.46/69.83 The set Q consists of the following terms: 202.46/69.83 202.46/69.83 active(zeros) 202.46/69.83 active(U11(tt)) 202.46/69.83 active(U21(tt)) 202.46/69.83 active(U31(tt)) 202.46/69.83 active(U41(tt, x0)) 202.46/69.83 active(U42(tt)) 202.46/69.83 active(U51(tt, x0)) 202.46/69.83 active(U52(tt)) 202.46/69.83 active(U61(tt, x0)) 202.46/69.83 active(U62(tt)) 202.46/69.83 active(U71(tt, x0, x1)) 202.46/69.83 active(U72(tt, x0)) 202.46/69.83 active(U81(tt)) 202.46/69.83 active(U91(tt, x0, x1, x2)) 202.46/69.83 active(U92(tt, x0, x1, x2)) 202.46/69.83 active(U93(tt, x0, x1, x2)) 202.46/69.83 active(isNat(0)) 202.46/69.83 active(isNat(length(x0))) 202.46/69.83 active(isNat(s(x0))) 202.46/69.83 active(isNatIList(x0)) 202.46/69.83 active(isNatList(nil)) 202.46/69.83 active(isNatList(cons(x0, x1))) 202.46/69.83 active(isNatList(take(x0, x1))) 202.46/69.83 active(length(nil)) 202.46/69.83 active(length(cons(x0, x1))) 202.46/69.83 active(take(0, x0)) 202.46/69.83 active(take(s(x0), cons(x1, x2))) 202.46/69.83 mark(zeros) 202.46/69.83 mark(cons(x0, x1)) 202.46/69.83 mark(0) 202.46/69.83 mark(U11(x0)) 202.46/69.83 mark(tt) 202.46/69.83 mark(U21(x0)) 202.46/69.83 mark(U31(x0)) 202.46/69.83 mark(U41(x0, x1)) 202.46/69.83 mark(U42(x0)) 202.46/69.83 mark(isNatIList(x0)) 202.46/69.83 mark(U51(x0, x1)) 202.46/69.83 mark(U52(x0)) 202.46/69.83 mark(isNatList(x0)) 202.46/69.83 mark(U61(x0, x1)) 202.46/69.83 mark(U62(x0)) 202.46/69.83 mark(U71(x0, x1, x2)) 202.46/69.83 mark(U72(x0, x1)) 202.46/69.83 mark(isNat(x0)) 202.46/69.83 mark(s(x0)) 202.46/69.83 mark(length(x0)) 202.46/69.83 mark(U81(x0)) 202.46/69.83 mark(nil) 202.46/69.83 mark(U91(x0, x1, x2, x3)) 202.46/69.83 mark(U92(x0, x1, x2, x3)) 202.46/69.83 mark(U93(x0, x1, x2, x3)) 202.46/69.83 mark(take(x0, x1)) 202.46/69.83 cons(mark(x0), x1) 202.46/69.83 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (228) QDPOrderProof (EQUIVALENT) 202.46/69.83 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.83 202.46/69.83 202.46/69.83 The following pairs can be oriented strictly and are deleted. 202.46/69.83 202.46/69.83 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 202.46/69.83 The remaining pairs can at least be oriented weakly. 202.46/69.83 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.46/69.83 202.46/69.83 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.46/69.83 POL( U51_2(x_1, x_2) ) = 2x_2 + 2 202.46/69.83 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.46/69.83 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.46/69.83 POL( length_1(x_1) ) = 0 202.46/69.83 POL( mark_1(x_1) ) = 2 202.46/69.83 POL( zeros ) = 0 202.46/69.83 POL( active_1(x_1) ) = 2 202.46/69.83 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.46/69.83 POL( 0 ) = 0 202.46/69.83 POL( U41_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} 202.46/69.83 POL( tt ) = 0 202.46/69.83 POL( U42_1(x_1) ) = max{0, -2} 202.46/69.83 POL( isNatIList_1(x_1) ) = 0 202.46/69.83 POL( U52_1(x_1) ) = 2x_1 + 1 202.46/69.83 POL( isNatList_1(x_1) ) = 0 202.46/69.83 POL( U61_2(x_1, x_2) ) = max{0, x_1 - 2} 202.46/69.83 POL( U62_1(x_1) ) = max{0, -2} 202.46/69.83 POL( isNat_1(x_1) ) = 0 202.46/69.83 POL( s_1(x_1) ) = x_1 + 1 202.46/69.83 POL( U91_4(x_1, ..., x_4) ) = x_1 + x_4 + 2 202.46/69.83 POL( U92_4(x_1, ..., x_4) ) = max{0, x_2 + 2x_3 - 2} 202.46/69.83 POL( U93_4(x_1, ..., x_4) ) = max{0, x_1 + x_2 - 2} 202.46/69.83 POL( take_2(x_1, x_2) ) = 0 202.46/69.83 POL( U11_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U21_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U31_1(x_1) ) = x_1 + 1 202.46/69.83 POL( U81_1(x_1) ) = 2 202.46/69.83 POL( nil ) = 0 202.46/69.83 POL( MARK_1(x_1) ) = max{0, x_1 - 1} 202.46/69.83 202.46/69.83 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.83 none 202.46/69.83 202.46/69.83 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (229) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 MARK(U52(X)) -> MARK(X) 202.46/69.83 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.83 MARK(s(X)) -> MARK(X) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 202.46/69.83 The set Q consists of the following terms: 202.46/69.83 202.46/69.83 active(zeros) 202.46/69.83 active(U11(tt)) 202.46/69.83 active(U21(tt)) 202.46/69.83 active(U31(tt)) 202.46/69.83 active(U41(tt, x0)) 202.46/69.83 active(U42(tt)) 202.46/69.83 active(U51(tt, x0)) 202.46/69.83 active(U52(tt)) 202.46/69.83 active(U61(tt, x0)) 202.46/69.83 active(U62(tt)) 202.46/69.83 active(U71(tt, x0, x1)) 202.46/69.83 active(U72(tt, x0)) 202.46/69.83 active(U81(tt)) 202.46/69.83 active(U91(tt, x0, x1, x2)) 202.46/69.83 active(U92(tt, x0, x1, x2)) 202.46/69.83 active(U93(tt, x0, x1, x2)) 202.46/69.83 active(isNat(0)) 202.46/69.83 active(isNat(length(x0))) 202.46/69.83 active(isNat(s(x0))) 202.46/69.83 active(isNatIList(x0)) 202.46/69.83 active(isNatList(nil)) 202.46/69.83 active(isNatList(cons(x0, x1))) 202.46/69.83 active(isNatList(take(x0, x1))) 202.46/69.83 active(length(nil)) 202.46/69.83 active(length(cons(x0, x1))) 202.46/69.83 active(take(0, x0)) 202.46/69.83 active(take(s(x0), cons(x1, x2))) 202.46/69.83 mark(zeros) 202.46/69.83 mark(cons(x0, x1)) 202.46/69.83 mark(0) 202.46/69.83 mark(U11(x0)) 202.46/69.83 mark(tt) 202.46/69.83 mark(U21(x0)) 202.46/69.83 mark(U31(x0)) 202.46/69.83 mark(U41(x0, x1)) 202.46/69.83 mark(U42(x0)) 202.46/69.83 mark(isNatIList(x0)) 202.46/69.83 mark(U51(x0, x1)) 202.46/69.83 mark(U52(x0)) 202.46/69.83 mark(isNatList(x0)) 202.46/69.83 mark(U61(x0, x1)) 202.46/69.83 mark(U62(x0)) 202.46/69.83 mark(U71(x0, x1, x2)) 202.46/69.83 mark(U72(x0, x1)) 202.46/69.83 mark(isNat(x0)) 202.46/69.83 mark(s(x0)) 202.46/69.83 mark(length(x0)) 202.46/69.83 mark(U81(x0)) 202.46/69.83 mark(nil) 202.46/69.83 mark(U91(x0, x1, x2, x3)) 202.46/69.83 mark(U92(x0, x1, x2, x3)) 202.46/69.83 mark(U93(x0, x1, x2, x3)) 202.46/69.83 mark(take(x0, x1)) 202.46/69.83 cons(mark(x0), x1) 202.46/69.83 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (230) QDPOrderProof (EQUIVALENT) 202.46/69.83 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.83 202.46/69.83 202.46/69.83 The following pairs can be oriented strictly and are deleted. 202.46/69.83 202.46/69.83 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 202.46/69.83 The remaining pairs can at least be oriented weakly. 202.46/69.83 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.46/69.83 202.46/69.83 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.46/69.83 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.46/69.83 POL( length_1(x_1) ) = max{0, -2} 202.46/69.83 POL( mark_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( zeros ) = 2 202.46/69.83 POL( active_1(x_1) ) = max{0, x_1 - 2} 202.46/69.83 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.46/69.83 POL( 0 ) = 0 202.46/69.83 POL( U41_2(x_1, x_2) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( tt ) = 2 202.46/69.83 POL( U42_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( isNatIList_1(x_1) ) = x_1 202.46/69.83 POL( U51_2(x_1, x_2) ) = x_1 202.46/69.83 POL( U52_1(x_1) ) = max{0, x_1 - 2} 202.46/69.83 POL( isNatList_1(x_1) ) = x_1 202.46/69.83 POL( U61_2(x_1, x_2) ) = 2 202.46/69.83 POL( U62_1(x_1) ) = 2 202.46/69.83 POL( isNat_1(x_1) ) = 2x_1 202.46/69.83 POL( s_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U91_4(x_1, ..., x_4) ) = 2x_3 + 2x_4 + 2 202.46/69.83 POL( U92_4(x_1, ..., x_4) ) = max{0, 2x_3 + 2x_4 - 2} 202.46/69.83 POL( U93_4(x_1, ..., x_4) ) = max{0, x_1 + x_2 + 2x_3 + 2x_4 - 2} 202.46/69.83 POL( take_2(x_1, x_2) ) = x_1 + 2x_2 + 2 202.46/69.83 POL( U11_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U21_1(x_1) ) = max{0, x_1 - 2} 202.46/69.83 POL( U31_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U81_1(x_1) ) = max{0, x_1 - 2} 202.46/69.83 POL( nil ) = 0 202.46/69.83 POL( MARK_1(x_1) ) = max{0, -2} 202.46/69.83 202.46/69.83 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.83 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 202.46/69.83 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (231) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 MARK(U52(X)) -> MARK(X) 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.83 MARK(s(X)) -> MARK(X) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 202.46/69.83 The set Q consists of the following terms: 202.46/69.83 202.46/69.83 active(zeros) 202.46/69.83 active(U11(tt)) 202.46/69.83 active(U21(tt)) 202.46/69.83 active(U31(tt)) 202.46/69.83 active(U41(tt, x0)) 202.46/69.83 active(U42(tt)) 202.46/69.83 active(U51(tt, x0)) 202.46/69.83 active(U52(tt)) 202.46/69.83 active(U61(tt, x0)) 202.46/69.83 active(U62(tt)) 202.46/69.83 active(U71(tt, x0, x1)) 202.46/69.83 active(U72(tt, x0)) 202.46/69.83 active(U81(tt)) 202.46/69.83 active(U91(tt, x0, x1, x2)) 202.46/69.83 active(U92(tt, x0, x1, x2)) 202.46/69.83 active(U93(tt, x0, x1, x2)) 202.46/69.83 active(isNat(0)) 202.46/69.83 active(isNat(length(x0))) 202.46/69.83 active(isNat(s(x0))) 202.46/69.83 active(isNatIList(x0)) 202.46/69.83 active(isNatList(nil)) 202.46/69.83 active(isNatList(cons(x0, x1))) 202.46/69.83 active(isNatList(take(x0, x1))) 202.46/69.83 active(length(nil)) 202.46/69.83 active(length(cons(x0, x1))) 202.46/69.83 active(take(0, x0)) 202.46/69.83 active(take(s(x0), cons(x1, x2))) 202.46/69.83 mark(zeros) 202.46/69.83 mark(cons(x0, x1)) 202.46/69.83 mark(0) 202.46/69.83 mark(U11(x0)) 202.46/69.83 mark(tt) 202.46/69.83 mark(U21(x0)) 202.46/69.83 mark(U31(x0)) 202.46/69.83 mark(U41(x0, x1)) 202.46/69.83 mark(U42(x0)) 202.46/69.83 mark(isNatIList(x0)) 202.46/69.83 mark(U51(x0, x1)) 202.46/69.83 mark(U52(x0)) 202.46/69.83 mark(isNatList(x0)) 202.46/69.83 mark(U61(x0, x1)) 202.46/69.83 mark(U62(x0)) 202.46/69.83 mark(U71(x0, x1, x2)) 202.46/69.83 mark(U72(x0, x1)) 202.46/69.83 mark(isNat(x0)) 202.46/69.83 mark(s(x0)) 202.46/69.83 mark(length(x0)) 202.46/69.83 mark(U81(x0)) 202.46/69.83 mark(nil) 202.46/69.83 mark(U91(x0, x1, x2, x3)) 202.46/69.83 mark(U92(x0, x1, x2, x3)) 202.46/69.83 mark(U93(x0, x1, x2, x3)) 202.46/69.83 mark(take(x0, x1)) 202.46/69.83 cons(mark(x0), x1) 202.46/69.83 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (232) QDPOrderProof (EQUIVALENT) 202.46/69.83 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.83 202.46/69.83 202.46/69.83 The following pairs can be oriented strictly and are deleted. 202.46/69.83 202.46/69.83 MARK(U52(X)) -> MARK(X) 202.46/69.83 The remaining pairs can at least be oriented weakly. 202.46/69.83 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.46/69.83 202.46/69.83 POL( ACTIVE_1(x_1) ) = max{0, -2} 202.46/69.83 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.46/69.83 POL( U72_2(x_1, x_2) ) = 2x_1 202.46/69.83 POL( length_1(x_1) ) = max{0, -2} 202.46/69.83 POL( mark_1(x_1) ) = max{0, x_1 - 1} 202.46/69.83 POL( zeros ) = 2 202.46/69.83 POL( active_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} 202.46/69.83 POL( 0 ) = 1 202.46/69.83 POL( U41_2(x_1, x_2) ) = max{0, x_2 - 1} 202.46/69.83 POL( tt ) = 1 202.46/69.83 POL( U42_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( isNatIList_1(x_1) ) = x_1 202.46/69.83 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} 202.46/69.83 POL( U52_1(x_1) ) = x_1 + 2 202.46/69.83 POL( isNatList_1(x_1) ) = 0 202.46/69.83 POL( U61_2(x_1, x_2) ) = max{0, 2x_2 - 2} 202.46/69.83 POL( U62_1(x_1) ) = max{0, x_1 - 2} 202.46/69.83 POL( isNat_1(x_1) ) = 0 202.46/69.83 POL( s_1(x_1) ) = 2x_1 202.46/69.83 POL( U91_4(x_1, ..., x_4) ) = max{0, 2x_2 - 2} 202.46/69.83 POL( U92_4(x_1, ..., x_4) ) = x_1 + 2x_4 + 2 202.46/69.83 POL( U93_4(x_1, ..., x_4) ) = 2x_2 + 2x_4 + 2 202.46/69.83 POL( take_2(x_1, x_2) ) = 2x_1 + 2x_2 202.46/69.83 POL( U11_1(x_1) ) = 2 202.46/69.83 POL( U21_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.83 POL( U31_1(x_1) ) = max{0, -2} 202.46/69.83 POL( U81_1(x_1) ) = 2x_1 + 2 202.46/69.83 POL( nil ) = 0 202.46/69.83 POL( MARK_1(x_1) ) = 2x_1 202.46/69.83 202.46/69.83 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.83 none 202.46/69.83 202.46/69.83 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (233) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.83 MARK(s(X)) -> MARK(X) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 202.46/69.83 The set Q consists of the following terms: 202.46/69.83 202.46/69.83 active(zeros) 202.46/69.83 active(U11(tt)) 202.46/69.83 active(U21(tt)) 202.46/69.83 active(U31(tt)) 202.46/69.83 active(U41(tt, x0)) 202.46/69.83 active(U42(tt)) 202.46/69.83 active(U51(tt, x0)) 202.46/69.83 active(U52(tt)) 202.46/69.83 active(U61(tt, x0)) 202.46/69.83 active(U62(tt)) 202.46/69.83 active(U71(tt, x0, x1)) 202.46/69.83 active(U72(tt, x0)) 202.46/69.83 active(U81(tt)) 202.46/69.83 active(U91(tt, x0, x1, x2)) 202.46/69.83 active(U92(tt, x0, x1, x2)) 202.46/69.83 active(U93(tt, x0, x1, x2)) 202.46/69.83 active(isNat(0)) 202.46/69.83 active(isNat(length(x0))) 202.46/69.83 active(isNat(s(x0))) 202.46/69.83 active(isNatIList(x0)) 202.46/69.83 active(isNatList(nil)) 202.46/69.83 active(isNatList(cons(x0, x1))) 202.46/69.83 active(isNatList(take(x0, x1))) 202.46/69.83 active(length(nil)) 202.46/69.83 active(length(cons(x0, x1))) 202.46/69.83 active(take(0, x0)) 202.46/69.83 active(take(s(x0), cons(x1, x2))) 202.46/69.83 mark(zeros) 202.46/69.83 mark(cons(x0, x1)) 202.46/69.83 mark(0) 202.46/69.83 mark(U11(x0)) 202.46/69.83 mark(tt) 202.46/69.83 mark(U21(x0)) 202.46/69.83 mark(U31(x0)) 202.46/69.83 mark(U41(x0, x1)) 202.46/69.83 mark(U42(x0)) 202.46/69.83 mark(isNatIList(x0)) 202.46/69.83 mark(U51(x0, x1)) 202.46/69.83 mark(U52(x0)) 202.46/69.83 mark(isNatList(x0)) 202.46/69.83 mark(U61(x0, x1)) 202.46/69.83 mark(U62(x0)) 202.46/69.83 mark(U71(x0, x1, x2)) 202.46/69.83 mark(U72(x0, x1)) 202.46/69.83 mark(isNat(x0)) 202.46/69.83 mark(s(x0)) 202.46/69.83 mark(length(x0)) 202.46/69.83 mark(U81(x0)) 202.46/69.83 mark(nil) 202.46/69.83 mark(U91(x0, x1, x2, x3)) 202.46/69.83 mark(U92(x0, x1, x2, x3)) 202.46/69.83 mark(U93(x0, x1, x2, x3)) 202.46/69.83 mark(take(x0, x1)) 202.46/69.83 cons(mark(x0), x1) 202.46/69.83 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (234) QDPOrderProof (EQUIVALENT) 202.46/69.83 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.83 202.46/69.83 202.46/69.83 The following pairs can be oriented strictly and are deleted. 202.46/69.83 202.46/69.83 MARK(s(X)) -> MARK(X) 202.46/69.83 The remaining pairs can at least be oriented weakly. 202.46/69.83 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(ACTIVE(x_1)) = [[-I]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U71(x_1, x_2, x_3)) = [[-I]] + [[0A]] * x_1 + [[1A]] * x_2 + [[-I]] * x_3 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(tt) = [[2A]] 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U72(x_1, x_2)) = [[2A]] + [[-I]] * x_1 + [[1A]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(isNat(x_1)) = [[-I]] + [[1A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(mark(x_1)) = [[1A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(s(x_1)) = [[2A]] + [[1A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(length(x_1)) = [[1A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(cons(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[1A]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(isNatList(x_1)) = [[-I]] + [[1A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(zeros) = [[0A]] 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(active(x_1)) = [[1A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(0) = [[1A]] 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U41(x_1, x_2)) = [[2A]] + [[-I]] * x_1 + [[-I]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U42(x_1)) = [[2A]] + [[-I]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(isNatIList(x_1)) = [[2A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U51(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[1A]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U52(x_1)) = [[0A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U61(x_1, x_2)) = [[2A]] + [[-I]] * x_1 + [[0A]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U62(x_1)) = [[0A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U91(x_1, x_2, x_3, x_4)) = [[-I]] + [[0A]] * x_1 + [[1A]] * x_2 + [[1A]] * x_3 + [[-I]] * x_4 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U92(x_1, x_2, x_3, x_4)) = [[-I]] + [[0A]] * x_1 + [[1A]] * x_2 + [[1A]] * x_3 + [[-I]] * x_4 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U93(x_1, x_2, x_3, x_4)) = [[2A]] + [[-I]] * x_1 + [[1A]] * x_2 + [[1A]] * x_3 + [[-I]] * x_4 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(take(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U11(x_1)) = [[2A]] + [[-I]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U21(x_1)) = [[0A]] + [[0A]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U31(x_1)) = [[2A]] + [[-I]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(U81(x_1)) = [[0A]] + [[-I]] * x_1 202.46/69.83 >>> 202.46/69.83 202.46/69.83 <<< 202.46/69.83 POL(nil) = [[1A]] 202.46/69.83 >>> 202.46/69.83 202.46/69.83 202.46/69.83 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 202.46/69.83 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (235) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U72(tt, L)) -> MARK(s(length(L))) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(length(X)) -> ACTIVE(length(mark(X))) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.83 U81(active(X)) -> U81(X) 202.46/69.83 U81(mark(X)) -> U81(X) 202.46/69.83 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.83 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.83 202.46/69.83 The set Q consists of the following terms: 202.46/69.83 202.46/69.83 active(zeros) 202.46/69.83 active(U11(tt)) 202.46/69.83 active(U21(tt)) 202.46/69.83 active(U31(tt)) 202.46/69.83 active(U41(tt, x0)) 202.46/69.83 active(U42(tt)) 202.46/69.83 active(U51(tt, x0)) 202.46/69.83 active(U52(tt)) 202.46/69.83 active(U61(tt, x0)) 202.46/69.83 active(U62(tt)) 202.46/69.83 active(U71(tt, x0, x1)) 202.46/69.83 active(U72(tt, x0)) 202.46/69.83 active(U81(tt)) 202.46/69.83 active(U91(tt, x0, x1, x2)) 202.46/69.83 active(U92(tt, x0, x1, x2)) 202.46/69.83 active(U93(tt, x0, x1, x2)) 202.46/69.83 active(isNat(0)) 202.46/69.83 active(isNat(length(x0))) 202.46/69.83 active(isNat(s(x0))) 202.46/69.83 active(isNatIList(x0)) 202.46/69.83 active(isNatList(nil)) 202.46/69.83 active(isNatList(cons(x0, x1))) 202.46/69.83 active(isNatList(take(x0, x1))) 202.46/69.83 active(length(nil)) 202.46/69.83 active(length(cons(x0, x1))) 202.46/69.83 active(take(0, x0)) 202.46/69.83 active(take(s(x0), cons(x1, x2))) 202.46/69.83 mark(zeros) 202.46/69.83 mark(cons(x0, x1)) 202.46/69.83 mark(0) 202.46/69.83 mark(U11(x0)) 202.46/69.83 mark(tt) 202.46/69.83 mark(U21(x0)) 202.46/69.83 mark(U31(x0)) 202.46/69.83 mark(U41(x0, x1)) 202.46/69.83 mark(U42(x0)) 202.46/69.83 mark(isNatIList(x0)) 202.46/69.83 mark(U51(x0, x1)) 202.46/69.83 mark(U52(x0)) 202.46/69.83 mark(isNatList(x0)) 202.46/69.83 mark(U61(x0, x1)) 202.46/69.83 mark(U62(x0)) 202.46/69.83 mark(U71(x0, x1, x2)) 202.46/69.83 mark(U72(x0, x1)) 202.46/69.83 mark(isNat(x0)) 202.46/69.83 mark(s(x0)) 202.46/69.83 mark(length(x0)) 202.46/69.83 mark(U81(x0)) 202.46/69.83 mark(nil) 202.46/69.83 mark(U91(x0, x1, x2, x3)) 202.46/69.83 mark(U92(x0, x1, x2, x3)) 202.46/69.83 mark(U93(x0, x1, x2, x3)) 202.46/69.83 mark(take(x0, x1)) 202.46/69.83 cons(mark(x0), x1) 202.46/69.83 cons(x0, mark(x1)) 202.46/69.83 cons(active(x0), x1) 202.46/69.83 cons(x0, active(x1)) 202.46/69.83 U11(mark(x0)) 202.46/69.83 U11(active(x0)) 202.46/69.83 U21(mark(x0)) 202.46/69.83 U21(active(x0)) 202.46/69.83 U31(mark(x0)) 202.46/69.83 U31(active(x0)) 202.46/69.83 U41(mark(x0), x1) 202.46/69.83 U41(x0, mark(x1)) 202.46/69.83 U41(active(x0), x1) 202.46/69.83 U41(x0, active(x1)) 202.46/69.83 U42(mark(x0)) 202.46/69.83 U42(active(x0)) 202.46/69.83 isNatIList(mark(x0)) 202.46/69.83 isNatIList(active(x0)) 202.46/69.83 U51(mark(x0), x1) 202.46/69.83 U51(x0, mark(x1)) 202.46/69.83 U51(active(x0), x1) 202.46/69.83 U51(x0, active(x1)) 202.46/69.83 U52(mark(x0)) 202.46/69.83 U52(active(x0)) 202.46/69.83 isNatList(mark(x0)) 202.46/69.83 isNatList(active(x0)) 202.46/69.83 U61(mark(x0), x1) 202.46/69.83 U61(x0, mark(x1)) 202.46/69.83 U61(active(x0), x1) 202.46/69.83 U61(x0, active(x1)) 202.46/69.83 U62(mark(x0)) 202.46/69.83 U62(active(x0)) 202.46/69.83 U71(mark(x0), x1, x2) 202.46/69.83 U71(x0, mark(x1), x2) 202.46/69.83 U71(x0, x1, mark(x2)) 202.46/69.83 U71(active(x0), x1, x2) 202.46/69.83 U71(x0, active(x1), x2) 202.46/69.83 U71(x0, x1, active(x2)) 202.46/69.83 U72(mark(x0), x1) 202.46/69.83 U72(x0, mark(x1)) 202.46/69.83 U72(active(x0), x1) 202.46/69.83 U72(x0, active(x1)) 202.46/69.83 isNat(mark(x0)) 202.46/69.83 isNat(active(x0)) 202.46/69.83 s(mark(x0)) 202.46/69.83 s(active(x0)) 202.46/69.83 length(mark(x0)) 202.46/69.83 length(active(x0)) 202.46/69.83 U81(mark(x0)) 202.46/69.83 U81(active(x0)) 202.46/69.83 U91(mark(x0), x1, x2, x3) 202.46/69.83 U91(x0, mark(x1), x2, x3) 202.46/69.83 U91(x0, x1, mark(x2), x3) 202.46/69.83 U91(x0, x1, x2, mark(x3)) 202.46/69.83 U91(active(x0), x1, x2, x3) 202.46/69.83 U91(x0, active(x1), x2, x3) 202.46/69.83 U91(x0, x1, active(x2), x3) 202.46/69.83 U91(x0, x1, x2, active(x3)) 202.46/69.83 U92(mark(x0), x1, x2, x3) 202.46/69.83 U92(x0, mark(x1), x2, x3) 202.46/69.83 U92(x0, x1, mark(x2), x3) 202.46/69.83 U92(x0, x1, x2, mark(x3)) 202.46/69.83 U92(active(x0), x1, x2, x3) 202.46/69.83 U92(x0, active(x1), x2, x3) 202.46/69.83 U92(x0, x1, active(x2), x3) 202.46/69.83 U92(x0, x1, x2, active(x3)) 202.46/69.83 U93(mark(x0), x1, x2, x3) 202.46/69.83 U93(x0, mark(x1), x2, x3) 202.46/69.83 U93(x0, x1, mark(x2), x3) 202.46/69.83 U93(x0, x1, x2, mark(x3)) 202.46/69.83 U93(active(x0), x1, x2, x3) 202.46/69.83 U93(x0, active(x1), x2, x3) 202.46/69.83 U93(x0, x1, active(x2), x3) 202.46/69.83 U93(x0, x1, x2, active(x3)) 202.46/69.83 take(mark(x0), x1) 202.46/69.83 take(x0, mark(x1)) 202.46/69.83 take(active(x0), x1) 202.46/69.83 take(x0, active(x1)) 202.46/69.83 202.46/69.83 We have to consider all minimal (P,Q,R)-chains. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (236) DependencyGraphProof (EQUIVALENT) 202.46/69.83 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 202.46/69.83 ---------------------------------------- 202.46/69.83 202.46/69.83 (237) 202.46/69.83 Obligation: 202.46/69.83 Q DP problem: 202.46/69.83 The TRS P consists of the following rules: 202.46/69.83 202.46/69.83 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.83 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.83 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.83 MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) 202.46/69.83 202.46/69.83 The TRS R consists of the following rules: 202.46/69.83 202.46/69.83 mark(zeros) -> active(zeros) 202.46/69.83 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.83 active(zeros) -> mark(cons(0, zeros)) 202.46/69.83 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.83 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.83 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.83 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.83 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.83 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.83 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.83 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.83 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.83 mark(s(X)) -> active(s(mark(X))) 202.46/69.83 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.83 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.83 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.83 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.83 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.83 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.83 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.83 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.83 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.83 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.83 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.83 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.83 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.83 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.83 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.83 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.83 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.83 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.83 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.83 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.83 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.83 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.83 mark(0) -> active(0) 202.46/69.83 mark(tt) -> active(tt) 202.46/69.83 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.83 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.83 mark(isNat(X)) -> active(isNat(X)) 202.46/69.83 mark(length(X)) -> active(length(mark(X))) 202.46/69.83 mark(nil) -> active(nil) 202.46/69.83 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.83 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.83 take(mark(X1), X2) -> take(X1, X2) 202.46/69.83 take(active(X1), X2) -> take(X1, X2) 202.46/69.83 take(X1, active(X2)) -> take(X1, X2) 202.46/69.83 active(U11(tt)) -> mark(tt) 202.46/69.83 active(U21(tt)) -> mark(tt) 202.46/69.83 active(U31(tt)) -> mark(tt) 202.46/69.83 active(U42(tt)) -> mark(tt) 202.46/69.83 active(U52(tt)) -> mark(tt) 202.46/69.83 active(U62(tt)) -> mark(tt) 202.46/69.83 active(isNat(0)) -> mark(tt) 202.46/69.83 active(isNatIList(zeros)) -> mark(tt) 202.46/69.83 active(isNatList(nil)) -> mark(tt) 202.46/69.83 length(active(X)) -> length(X) 202.46/69.83 length(mark(X)) -> length(X) 202.46/69.83 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.83 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.83 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.83 U42(active(X)) -> U42(X) 202.46/69.83 U42(mark(X)) -> U42(X) 202.46/69.83 U52(active(X)) -> U52(X) 202.46/69.83 U52(mark(X)) -> U52(X) 202.46/69.83 U62(active(X)) -> U62(X) 202.46/69.83 U62(mark(X)) -> U62(X) 202.46/69.83 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.83 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.83 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.83 s(active(X)) -> s(X) 202.46/69.83 s(mark(X)) -> s(X) 202.46/69.83 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.83 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.83 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.83 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.83 U11(active(X)) -> U11(X) 202.46/69.83 U11(mark(X)) -> U11(X) 202.46/69.83 U21(active(X)) -> U21(X) 202.46/69.83 U21(mark(X)) -> U21(X) 202.46/69.83 U31(active(X)) -> U31(X) 202.46/69.83 U31(mark(X)) -> U31(X) 202.46/69.83 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.83 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.83 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.83 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.83 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.83 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.83 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.83 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.83 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.83 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.83 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.83 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.83 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 U81(active(X)) -> U81(X) 202.46/69.84 U81(mark(X)) -> U81(X) 202.46/69.84 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 202.46/69.84 The set Q consists of the following terms: 202.46/69.84 202.46/69.84 active(zeros) 202.46/69.84 active(U11(tt)) 202.46/69.84 active(U21(tt)) 202.46/69.84 active(U31(tt)) 202.46/69.84 active(U41(tt, x0)) 202.46/69.84 active(U42(tt)) 202.46/69.84 active(U51(tt, x0)) 202.46/69.84 active(U52(tt)) 202.46/69.84 active(U61(tt, x0)) 202.46/69.84 active(U62(tt)) 202.46/69.84 active(U71(tt, x0, x1)) 202.46/69.84 active(U72(tt, x0)) 202.46/69.84 active(U81(tt)) 202.46/69.84 active(U91(tt, x0, x1, x2)) 202.46/69.84 active(U92(tt, x0, x1, x2)) 202.46/69.84 active(U93(tt, x0, x1, x2)) 202.46/69.84 active(isNat(0)) 202.46/69.84 active(isNat(length(x0))) 202.46/69.84 active(isNat(s(x0))) 202.46/69.84 active(isNatIList(x0)) 202.46/69.84 active(isNatList(nil)) 202.46/69.84 active(isNatList(cons(x0, x1))) 202.46/69.84 active(isNatList(take(x0, x1))) 202.46/69.84 active(length(nil)) 202.46/69.84 active(length(cons(x0, x1))) 202.46/69.84 active(take(0, x0)) 202.46/69.84 active(take(s(x0), cons(x1, x2))) 202.46/69.84 mark(zeros) 202.46/69.84 mark(cons(x0, x1)) 202.46/69.84 mark(0) 202.46/69.84 mark(U11(x0)) 202.46/69.84 mark(tt) 202.46/69.84 mark(U21(x0)) 202.46/69.84 mark(U31(x0)) 202.46/69.84 mark(U41(x0, x1)) 202.46/69.84 mark(U42(x0)) 202.46/69.84 mark(isNatIList(x0)) 202.46/69.84 mark(U51(x0, x1)) 202.46/69.84 mark(U52(x0)) 202.46/69.84 mark(isNatList(x0)) 202.46/69.84 mark(U61(x0, x1)) 202.46/69.84 mark(U62(x0)) 202.46/69.84 mark(U71(x0, x1, x2)) 202.46/69.84 mark(U72(x0, x1)) 202.46/69.84 mark(isNat(x0)) 202.46/69.84 mark(s(x0)) 202.46/69.84 mark(length(x0)) 202.46/69.84 mark(U81(x0)) 202.46/69.84 mark(nil) 202.46/69.84 mark(U91(x0, x1, x2, x3)) 202.46/69.84 mark(U92(x0, x1, x2, x3)) 202.46/69.84 mark(U93(x0, x1, x2, x3)) 202.46/69.84 mark(take(x0, x1)) 202.46/69.84 cons(mark(x0), x1) 202.46/69.84 cons(x0, mark(x1)) 202.46/69.84 cons(active(x0), x1) 202.46/69.84 cons(x0, active(x1)) 202.46/69.84 U11(mark(x0)) 202.46/69.84 U11(active(x0)) 202.46/69.84 U21(mark(x0)) 202.46/69.84 U21(active(x0)) 202.46/69.84 U31(mark(x0)) 202.46/69.84 U31(active(x0)) 202.46/69.84 U41(mark(x0), x1) 202.46/69.84 U41(x0, mark(x1)) 202.46/69.84 U41(active(x0), x1) 202.46/69.84 U41(x0, active(x1)) 202.46/69.84 U42(mark(x0)) 202.46/69.84 U42(active(x0)) 202.46/69.84 isNatIList(mark(x0)) 202.46/69.84 isNatIList(active(x0)) 202.46/69.84 U51(mark(x0), x1) 202.46/69.84 U51(x0, mark(x1)) 202.46/69.84 U51(active(x0), x1) 202.46/69.84 U51(x0, active(x1)) 202.46/69.84 U52(mark(x0)) 202.46/69.84 U52(active(x0)) 202.46/69.84 isNatList(mark(x0)) 202.46/69.84 isNatList(active(x0)) 202.46/69.84 U61(mark(x0), x1) 202.46/69.84 U61(x0, mark(x1)) 202.46/69.84 U61(active(x0), x1) 202.46/69.84 U61(x0, active(x1)) 202.46/69.84 U62(mark(x0)) 202.46/69.84 U62(active(x0)) 202.46/69.84 U71(mark(x0), x1, x2) 202.46/69.84 U71(x0, mark(x1), x2) 202.46/69.84 U71(x0, x1, mark(x2)) 202.46/69.84 U71(active(x0), x1, x2) 202.46/69.84 U71(x0, active(x1), x2) 202.46/69.84 U71(x0, x1, active(x2)) 202.46/69.84 U72(mark(x0), x1) 202.46/69.84 U72(x0, mark(x1)) 202.46/69.84 U72(active(x0), x1) 202.46/69.84 U72(x0, active(x1)) 202.46/69.84 isNat(mark(x0)) 202.46/69.84 isNat(active(x0)) 202.46/69.84 s(mark(x0)) 202.46/69.84 s(active(x0)) 202.46/69.84 length(mark(x0)) 202.46/69.84 length(active(x0)) 202.46/69.84 U81(mark(x0)) 202.46/69.84 U81(active(x0)) 202.46/69.84 U91(mark(x0), x1, x2, x3) 202.46/69.84 U91(x0, mark(x1), x2, x3) 202.46/69.84 U91(x0, x1, mark(x2), x3) 202.46/69.84 U91(x0, x1, x2, mark(x3)) 202.46/69.84 U91(active(x0), x1, x2, x3) 202.46/69.84 U91(x0, active(x1), x2, x3) 202.46/69.84 U91(x0, x1, active(x2), x3) 202.46/69.84 U91(x0, x1, x2, active(x3)) 202.46/69.84 U92(mark(x0), x1, x2, x3) 202.46/69.84 U92(x0, mark(x1), x2, x3) 202.46/69.84 U92(x0, x1, mark(x2), x3) 202.46/69.84 U92(x0, x1, x2, mark(x3)) 202.46/69.84 U92(active(x0), x1, x2, x3) 202.46/69.84 U92(x0, active(x1), x2, x3) 202.46/69.84 U92(x0, x1, active(x2), x3) 202.46/69.84 U92(x0, x1, x2, active(x3)) 202.46/69.84 U93(mark(x0), x1, x2, x3) 202.46/69.84 U93(x0, mark(x1), x2, x3) 202.46/69.84 U93(x0, x1, mark(x2), x3) 202.46/69.84 U93(x0, x1, x2, mark(x3)) 202.46/69.84 U93(active(x0), x1, x2, x3) 202.46/69.84 U93(x0, active(x1), x2, x3) 202.46/69.84 U93(x0, x1, active(x2), x3) 202.46/69.84 U93(x0, x1, x2, active(x3)) 202.46/69.84 take(mark(x0), x1) 202.46/69.84 take(x0, mark(x1)) 202.46/69.84 take(active(x0), x1) 202.46/69.84 take(x0, active(x1)) 202.46/69.84 202.46/69.84 We have to consider all minimal (P,Q,R)-chains. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (238) TransformationProof (EQUIVALENT) 202.46/69.84 By instantiating [LPAR04] the rule MARK(U71(X1, X2, X3)) -> ACTIVE(U71(mark(X1), X2, X3)) we obtained the following new rules [LPAR04]: 202.46/69.84 202.46/69.84 (MARK(U71(isNatList(z1), z1, z0)) -> ACTIVE(U71(mark(isNatList(z1)), z1, z0)),MARK(U71(isNatList(z1), z1, z0)) -> ACTIVE(U71(mark(isNatList(z1)), z1, z0))) 202.46/69.84 202.46/69.84 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (239) 202.46/69.84 Obligation: 202.46/69.84 Q DP problem: 202.46/69.84 The TRS P consists of the following rules: 202.46/69.84 202.46/69.84 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.84 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.84 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.84 MARK(U71(isNatList(z1), z1, z0)) -> ACTIVE(U71(mark(isNatList(z1)), z1, z0)) 202.46/69.84 202.46/69.84 The TRS R consists of the following rules: 202.46/69.84 202.46/69.84 mark(zeros) -> active(zeros) 202.46/69.84 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.84 active(zeros) -> mark(cons(0, zeros)) 202.46/69.84 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.84 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.84 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.84 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.84 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.84 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.84 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.84 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.84 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.84 mark(s(X)) -> active(s(mark(X))) 202.46/69.84 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.84 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.84 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.84 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.84 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.84 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.84 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.84 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.84 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.84 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.84 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.84 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.84 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.84 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.84 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.84 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.84 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.84 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.84 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.84 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.84 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.84 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.84 mark(0) -> active(0) 202.46/69.84 mark(tt) -> active(tt) 202.46/69.84 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.84 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.84 mark(isNat(X)) -> active(isNat(X)) 202.46/69.84 mark(length(X)) -> active(length(mark(X))) 202.46/69.84 mark(nil) -> active(nil) 202.46/69.84 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.84 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.84 take(mark(X1), X2) -> take(X1, X2) 202.46/69.84 take(active(X1), X2) -> take(X1, X2) 202.46/69.84 take(X1, active(X2)) -> take(X1, X2) 202.46/69.84 active(U11(tt)) -> mark(tt) 202.46/69.84 active(U21(tt)) -> mark(tt) 202.46/69.84 active(U31(tt)) -> mark(tt) 202.46/69.84 active(U42(tt)) -> mark(tt) 202.46/69.84 active(U52(tt)) -> mark(tt) 202.46/69.84 active(U62(tt)) -> mark(tt) 202.46/69.84 active(isNat(0)) -> mark(tt) 202.46/69.84 active(isNatIList(zeros)) -> mark(tt) 202.46/69.84 active(isNatList(nil)) -> mark(tt) 202.46/69.84 length(active(X)) -> length(X) 202.46/69.84 length(mark(X)) -> length(X) 202.46/69.84 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.84 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.84 U42(active(X)) -> U42(X) 202.46/69.84 U42(mark(X)) -> U42(X) 202.46/69.84 U52(active(X)) -> U52(X) 202.46/69.84 U52(mark(X)) -> U52(X) 202.46/69.84 U62(active(X)) -> U62(X) 202.46/69.84 U62(mark(X)) -> U62(X) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 s(active(X)) -> s(X) 202.46/69.84 s(mark(X)) -> s(X) 202.46/69.84 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U11(active(X)) -> U11(X) 202.46/69.84 U11(mark(X)) -> U11(X) 202.46/69.84 U21(active(X)) -> U21(X) 202.46/69.84 U21(mark(X)) -> U21(X) 202.46/69.84 U31(active(X)) -> U31(X) 202.46/69.84 U31(mark(X)) -> U31(X) 202.46/69.84 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.84 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.84 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.84 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.84 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.84 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.84 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.84 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 U81(active(X)) -> U81(X) 202.46/69.84 U81(mark(X)) -> U81(X) 202.46/69.84 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 202.46/69.84 The set Q consists of the following terms: 202.46/69.84 202.46/69.84 active(zeros) 202.46/69.84 active(U11(tt)) 202.46/69.84 active(U21(tt)) 202.46/69.84 active(U31(tt)) 202.46/69.84 active(U41(tt, x0)) 202.46/69.84 active(U42(tt)) 202.46/69.84 active(U51(tt, x0)) 202.46/69.84 active(U52(tt)) 202.46/69.84 active(U61(tt, x0)) 202.46/69.84 active(U62(tt)) 202.46/69.84 active(U71(tt, x0, x1)) 202.46/69.84 active(U72(tt, x0)) 202.46/69.84 active(U81(tt)) 202.46/69.84 active(U91(tt, x0, x1, x2)) 202.46/69.84 active(U92(tt, x0, x1, x2)) 202.46/69.84 active(U93(tt, x0, x1, x2)) 202.46/69.84 active(isNat(0)) 202.46/69.84 active(isNat(length(x0))) 202.46/69.84 active(isNat(s(x0))) 202.46/69.84 active(isNatIList(x0)) 202.46/69.84 active(isNatList(nil)) 202.46/69.84 active(isNatList(cons(x0, x1))) 202.46/69.84 active(isNatList(take(x0, x1))) 202.46/69.84 active(length(nil)) 202.46/69.84 active(length(cons(x0, x1))) 202.46/69.84 active(take(0, x0)) 202.46/69.84 active(take(s(x0), cons(x1, x2))) 202.46/69.84 mark(zeros) 202.46/69.84 mark(cons(x0, x1)) 202.46/69.84 mark(0) 202.46/69.84 mark(U11(x0)) 202.46/69.84 mark(tt) 202.46/69.84 mark(U21(x0)) 202.46/69.84 mark(U31(x0)) 202.46/69.84 mark(U41(x0, x1)) 202.46/69.84 mark(U42(x0)) 202.46/69.84 mark(isNatIList(x0)) 202.46/69.84 mark(U51(x0, x1)) 202.46/69.84 mark(U52(x0)) 202.46/69.84 mark(isNatList(x0)) 202.46/69.84 mark(U61(x0, x1)) 202.46/69.84 mark(U62(x0)) 202.46/69.84 mark(U71(x0, x1, x2)) 202.46/69.84 mark(U72(x0, x1)) 202.46/69.84 mark(isNat(x0)) 202.46/69.84 mark(s(x0)) 202.46/69.84 mark(length(x0)) 202.46/69.84 mark(U81(x0)) 202.46/69.84 mark(nil) 202.46/69.84 mark(U91(x0, x1, x2, x3)) 202.46/69.84 mark(U92(x0, x1, x2, x3)) 202.46/69.84 mark(U93(x0, x1, x2, x3)) 202.46/69.84 mark(take(x0, x1)) 202.46/69.84 cons(mark(x0), x1) 202.46/69.84 cons(x0, mark(x1)) 202.46/69.84 cons(active(x0), x1) 202.46/69.84 cons(x0, active(x1)) 202.46/69.84 U11(mark(x0)) 202.46/69.84 U11(active(x0)) 202.46/69.84 U21(mark(x0)) 202.46/69.84 U21(active(x0)) 202.46/69.84 U31(mark(x0)) 202.46/69.84 U31(active(x0)) 202.46/69.84 U41(mark(x0), x1) 202.46/69.84 U41(x0, mark(x1)) 202.46/69.84 U41(active(x0), x1) 202.46/69.84 U41(x0, active(x1)) 202.46/69.84 U42(mark(x0)) 202.46/69.84 U42(active(x0)) 202.46/69.84 isNatIList(mark(x0)) 202.46/69.84 isNatIList(active(x0)) 202.46/69.84 U51(mark(x0), x1) 202.46/69.84 U51(x0, mark(x1)) 202.46/69.84 U51(active(x0), x1) 202.46/69.84 U51(x0, active(x1)) 202.46/69.84 U52(mark(x0)) 202.46/69.84 U52(active(x0)) 202.46/69.84 isNatList(mark(x0)) 202.46/69.84 isNatList(active(x0)) 202.46/69.84 U61(mark(x0), x1) 202.46/69.84 U61(x0, mark(x1)) 202.46/69.84 U61(active(x0), x1) 202.46/69.84 U61(x0, active(x1)) 202.46/69.84 U62(mark(x0)) 202.46/69.84 U62(active(x0)) 202.46/69.84 U71(mark(x0), x1, x2) 202.46/69.84 U71(x0, mark(x1), x2) 202.46/69.84 U71(x0, x1, mark(x2)) 202.46/69.84 U71(active(x0), x1, x2) 202.46/69.84 U71(x0, active(x1), x2) 202.46/69.84 U71(x0, x1, active(x2)) 202.46/69.84 U72(mark(x0), x1) 202.46/69.84 U72(x0, mark(x1)) 202.46/69.84 U72(active(x0), x1) 202.46/69.84 U72(x0, active(x1)) 202.46/69.84 isNat(mark(x0)) 202.46/69.84 isNat(active(x0)) 202.46/69.84 s(mark(x0)) 202.46/69.84 s(active(x0)) 202.46/69.84 length(mark(x0)) 202.46/69.84 length(active(x0)) 202.46/69.84 U81(mark(x0)) 202.46/69.84 U81(active(x0)) 202.46/69.84 U91(mark(x0), x1, x2, x3) 202.46/69.84 U91(x0, mark(x1), x2, x3) 202.46/69.84 U91(x0, x1, mark(x2), x3) 202.46/69.84 U91(x0, x1, x2, mark(x3)) 202.46/69.84 U91(active(x0), x1, x2, x3) 202.46/69.84 U91(x0, active(x1), x2, x3) 202.46/69.84 U91(x0, x1, active(x2), x3) 202.46/69.84 U91(x0, x1, x2, active(x3)) 202.46/69.84 U92(mark(x0), x1, x2, x3) 202.46/69.84 U92(x0, mark(x1), x2, x3) 202.46/69.84 U92(x0, x1, mark(x2), x3) 202.46/69.84 U92(x0, x1, x2, mark(x3)) 202.46/69.84 U92(active(x0), x1, x2, x3) 202.46/69.84 U92(x0, active(x1), x2, x3) 202.46/69.84 U92(x0, x1, active(x2), x3) 202.46/69.84 U92(x0, x1, x2, active(x3)) 202.46/69.84 U93(mark(x0), x1, x2, x3) 202.46/69.84 U93(x0, mark(x1), x2, x3) 202.46/69.84 U93(x0, x1, mark(x2), x3) 202.46/69.84 U93(x0, x1, x2, mark(x3)) 202.46/69.84 U93(active(x0), x1, x2, x3) 202.46/69.84 U93(x0, active(x1), x2, x3) 202.46/69.84 U93(x0, x1, active(x2), x3) 202.46/69.84 U93(x0, x1, x2, active(x3)) 202.46/69.84 take(mark(x0), x1) 202.46/69.84 take(x0, mark(x1)) 202.46/69.84 take(active(x0), x1) 202.46/69.84 take(x0, active(x1)) 202.46/69.84 202.46/69.84 We have to consider all minimal (P,Q,R)-chains. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (240) QDPOrderProof (EQUIVALENT) 202.46/69.84 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.84 202.46/69.84 202.46/69.84 The following pairs can be oriented strictly and are deleted. 202.46/69.84 202.46/69.84 ACTIVE(length(cons(N, L))) -> MARK(U71(isNatList(L), L, N)) 202.46/69.84 The remaining pairs can at least be oriented weakly. 202.46/69.84 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 202.46/69.84 202.46/69.84 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} 202.46/69.84 POL( U71_3(x_1, ..., x_3) ) = max{0, -2} 202.46/69.84 POL( U72_2(x_1, x_2) ) = max{0, -2} 202.46/69.84 POL( mark_1(x_1) ) = max{0, x_1 - 2} 202.46/69.84 POL( zeros ) = 0 202.46/69.84 POL( active_1(x_1) ) = 1 202.46/69.84 POL( cons_2(x_1, x_2) ) = max{0, -2} 202.46/69.84 POL( 0 ) = 0 202.46/69.84 POL( U41_2(x_1, x_2) ) = 2x_2 202.46/69.84 POL( tt ) = 0 202.46/69.84 POL( U42_1(x_1) ) = max{0, -2} 202.46/69.84 POL( isNatIList_1(x_1) ) = 2x_1 202.46/69.84 POL( U51_2(x_1, x_2) ) = 2 202.46/69.84 POL( U52_1(x_1) ) = 2 202.46/69.84 POL( isNatList_1(x_1) ) = 0 202.46/69.84 POL( U61_2(x_1, x_2) ) = 2 202.46/69.84 POL( U62_1(x_1) ) = 2 202.46/69.84 POL( isNat_1(x_1) ) = 0 202.46/69.84 POL( s_1(x_1) ) = max{0, -2} 202.46/69.84 POL( length_1(x_1) ) = 2 202.46/69.84 POL( U91_4(x_1, ..., x_4) ) = 2x_4 + 2 202.46/69.84 POL( U92_4(x_1, ..., x_4) ) = 2 202.46/69.84 POL( U93_4(x_1, ..., x_4) ) = max{0, 2x_2 + 2x_3 - 2} 202.46/69.84 POL( take_2(x_1, x_2) ) = x_1 + x_2 + 1 202.46/69.84 POL( U11_1(x_1) ) = 2x_1 + 1 202.46/69.84 POL( U21_1(x_1) ) = max{0, -2} 202.46/69.84 POL( U31_1(x_1) ) = x_1 + 2 202.46/69.84 POL( U81_1(x_1) ) = x_1 202.46/69.84 POL( nil ) = 0 202.46/69.84 POL( MARK_1(x_1) ) = max{0, -2} 202.46/69.84 202.46/69.84 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.84 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.84 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 202.46/69.84 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (241) 202.46/69.84 Obligation: 202.46/69.84 Q DP problem: 202.46/69.84 The TRS P consists of the following rules: 202.46/69.84 202.46/69.84 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.84 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.84 MARK(U71(isNatList(z1), z1, z0)) -> ACTIVE(U71(mark(isNatList(z1)), z1, z0)) 202.46/69.84 202.46/69.84 The TRS R consists of the following rules: 202.46/69.84 202.46/69.84 mark(zeros) -> active(zeros) 202.46/69.84 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.84 active(zeros) -> mark(cons(0, zeros)) 202.46/69.84 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.84 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.84 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.84 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.84 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.84 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.84 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.84 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.84 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.84 mark(s(X)) -> active(s(mark(X))) 202.46/69.84 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.84 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.84 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.84 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.84 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.84 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.84 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.84 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.84 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.84 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.84 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.84 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.84 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.84 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.84 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.84 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.84 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.84 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.84 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.84 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.84 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.84 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.84 mark(0) -> active(0) 202.46/69.84 mark(tt) -> active(tt) 202.46/69.84 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.84 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.84 mark(isNat(X)) -> active(isNat(X)) 202.46/69.84 mark(length(X)) -> active(length(mark(X))) 202.46/69.84 mark(nil) -> active(nil) 202.46/69.84 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.84 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.84 take(mark(X1), X2) -> take(X1, X2) 202.46/69.84 take(active(X1), X2) -> take(X1, X2) 202.46/69.84 take(X1, active(X2)) -> take(X1, X2) 202.46/69.84 active(U11(tt)) -> mark(tt) 202.46/69.84 active(U21(tt)) -> mark(tt) 202.46/69.84 active(U31(tt)) -> mark(tt) 202.46/69.84 active(U42(tt)) -> mark(tt) 202.46/69.84 active(U52(tt)) -> mark(tt) 202.46/69.84 active(U62(tt)) -> mark(tt) 202.46/69.84 active(isNat(0)) -> mark(tt) 202.46/69.84 active(isNatIList(zeros)) -> mark(tt) 202.46/69.84 active(isNatList(nil)) -> mark(tt) 202.46/69.84 length(active(X)) -> length(X) 202.46/69.84 length(mark(X)) -> length(X) 202.46/69.84 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.84 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.84 U42(active(X)) -> U42(X) 202.46/69.84 U42(mark(X)) -> U42(X) 202.46/69.84 U52(active(X)) -> U52(X) 202.46/69.84 U52(mark(X)) -> U52(X) 202.46/69.84 U62(active(X)) -> U62(X) 202.46/69.84 U62(mark(X)) -> U62(X) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 s(active(X)) -> s(X) 202.46/69.84 s(mark(X)) -> s(X) 202.46/69.84 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U11(active(X)) -> U11(X) 202.46/69.84 U11(mark(X)) -> U11(X) 202.46/69.84 U21(active(X)) -> U21(X) 202.46/69.84 U21(mark(X)) -> U21(X) 202.46/69.84 U31(active(X)) -> U31(X) 202.46/69.84 U31(mark(X)) -> U31(X) 202.46/69.84 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.84 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.84 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.84 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.84 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.84 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.84 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.84 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 U81(active(X)) -> U81(X) 202.46/69.84 U81(mark(X)) -> U81(X) 202.46/69.84 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 202.46/69.84 The set Q consists of the following terms: 202.46/69.84 202.46/69.84 active(zeros) 202.46/69.84 active(U11(tt)) 202.46/69.84 active(U21(tt)) 202.46/69.84 active(U31(tt)) 202.46/69.84 active(U41(tt, x0)) 202.46/69.84 active(U42(tt)) 202.46/69.84 active(U51(tt, x0)) 202.46/69.84 active(U52(tt)) 202.46/69.84 active(U61(tt, x0)) 202.46/69.84 active(U62(tt)) 202.46/69.84 active(U71(tt, x0, x1)) 202.46/69.84 active(U72(tt, x0)) 202.46/69.84 active(U81(tt)) 202.46/69.84 active(U91(tt, x0, x1, x2)) 202.46/69.84 active(U92(tt, x0, x1, x2)) 202.46/69.84 active(U93(tt, x0, x1, x2)) 202.46/69.84 active(isNat(0)) 202.46/69.84 active(isNat(length(x0))) 202.46/69.84 active(isNat(s(x0))) 202.46/69.84 active(isNatIList(x0)) 202.46/69.84 active(isNatList(nil)) 202.46/69.84 active(isNatList(cons(x0, x1))) 202.46/69.84 active(isNatList(take(x0, x1))) 202.46/69.84 active(length(nil)) 202.46/69.84 active(length(cons(x0, x1))) 202.46/69.84 active(take(0, x0)) 202.46/69.84 active(take(s(x0), cons(x1, x2))) 202.46/69.84 mark(zeros) 202.46/69.84 mark(cons(x0, x1)) 202.46/69.84 mark(0) 202.46/69.84 mark(U11(x0)) 202.46/69.84 mark(tt) 202.46/69.84 mark(U21(x0)) 202.46/69.84 mark(U31(x0)) 202.46/69.84 mark(U41(x0, x1)) 202.46/69.84 mark(U42(x0)) 202.46/69.84 mark(isNatIList(x0)) 202.46/69.84 mark(U51(x0, x1)) 202.46/69.84 mark(U52(x0)) 202.46/69.84 mark(isNatList(x0)) 202.46/69.84 mark(U61(x0, x1)) 202.46/69.84 mark(U62(x0)) 202.46/69.84 mark(U71(x0, x1, x2)) 202.46/69.84 mark(U72(x0, x1)) 202.46/69.84 mark(isNat(x0)) 202.46/69.84 mark(s(x0)) 202.46/69.84 mark(length(x0)) 202.46/69.84 mark(U81(x0)) 202.46/69.84 mark(nil) 202.46/69.84 mark(U91(x0, x1, x2, x3)) 202.46/69.84 mark(U92(x0, x1, x2, x3)) 202.46/69.84 mark(U93(x0, x1, x2, x3)) 202.46/69.84 mark(take(x0, x1)) 202.46/69.84 cons(mark(x0), x1) 202.46/69.84 cons(x0, mark(x1)) 202.46/69.84 cons(active(x0), x1) 202.46/69.84 cons(x0, active(x1)) 202.46/69.84 U11(mark(x0)) 202.46/69.84 U11(active(x0)) 202.46/69.84 U21(mark(x0)) 202.46/69.84 U21(active(x0)) 202.46/69.84 U31(mark(x0)) 202.46/69.84 U31(active(x0)) 202.46/69.84 U41(mark(x0), x1) 202.46/69.84 U41(x0, mark(x1)) 202.46/69.84 U41(active(x0), x1) 202.46/69.84 U41(x0, active(x1)) 202.46/69.84 U42(mark(x0)) 202.46/69.84 U42(active(x0)) 202.46/69.84 isNatIList(mark(x0)) 202.46/69.84 isNatIList(active(x0)) 202.46/69.84 U51(mark(x0), x1) 202.46/69.84 U51(x0, mark(x1)) 202.46/69.84 U51(active(x0), x1) 202.46/69.84 U51(x0, active(x1)) 202.46/69.84 U52(mark(x0)) 202.46/69.84 U52(active(x0)) 202.46/69.84 isNatList(mark(x0)) 202.46/69.84 isNatList(active(x0)) 202.46/69.84 U61(mark(x0), x1) 202.46/69.84 U61(x0, mark(x1)) 202.46/69.84 U61(active(x0), x1) 202.46/69.84 U61(x0, active(x1)) 202.46/69.84 U62(mark(x0)) 202.46/69.84 U62(active(x0)) 202.46/69.84 U71(mark(x0), x1, x2) 202.46/69.84 U71(x0, mark(x1), x2) 202.46/69.84 U71(x0, x1, mark(x2)) 202.46/69.84 U71(active(x0), x1, x2) 202.46/69.84 U71(x0, active(x1), x2) 202.46/69.84 U71(x0, x1, active(x2)) 202.46/69.84 U72(mark(x0), x1) 202.46/69.84 U72(x0, mark(x1)) 202.46/69.84 U72(active(x0), x1) 202.46/69.84 U72(x0, active(x1)) 202.46/69.84 isNat(mark(x0)) 202.46/69.84 isNat(active(x0)) 202.46/69.84 s(mark(x0)) 202.46/69.84 s(active(x0)) 202.46/69.84 length(mark(x0)) 202.46/69.84 length(active(x0)) 202.46/69.84 U81(mark(x0)) 202.46/69.84 U81(active(x0)) 202.46/69.84 U91(mark(x0), x1, x2, x3) 202.46/69.84 U91(x0, mark(x1), x2, x3) 202.46/69.84 U91(x0, x1, mark(x2), x3) 202.46/69.84 U91(x0, x1, x2, mark(x3)) 202.46/69.84 U91(active(x0), x1, x2, x3) 202.46/69.84 U91(x0, active(x1), x2, x3) 202.46/69.84 U91(x0, x1, active(x2), x3) 202.46/69.84 U91(x0, x1, x2, active(x3)) 202.46/69.84 U92(mark(x0), x1, x2, x3) 202.46/69.84 U92(x0, mark(x1), x2, x3) 202.46/69.84 U92(x0, x1, mark(x2), x3) 202.46/69.84 U92(x0, x1, x2, mark(x3)) 202.46/69.84 U92(active(x0), x1, x2, x3) 202.46/69.84 U92(x0, active(x1), x2, x3) 202.46/69.84 U92(x0, x1, active(x2), x3) 202.46/69.84 U92(x0, x1, x2, active(x3)) 202.46/69.84 U93(mark(x0), x1, x2, x3) 202.46/69.84 U93(x0, mark(x1), x2, x3) 202.46/69.84 U93(x0, x1, mark(x2), x3) 202.46/69.84 U93(x0, x1, x2, mark(x3)) 202.46/69.84 U93(active(x0), x1, x2, x3) 202.46/69.84 U93(x0, active(x1), x2, x3) 202.46/69.84 U93(x0, x1, active(x2), x3) 202.46/69.84 U93(x0, x1, x2, active(x3)) 202.46/69.84 take(mark(x0), x1) 202.46/69.84 take(x0, mark(x1)) 202.46/69.84 take(active(x0), x1) 202.46/69.84 take(x0, active(x1)) 202.46/69.84 202.46/69.84 We have to consider all minimal (P,Q,R)-chains. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (242) DependencyGraphProof (EQUIVALENT) 202.46/69.84 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (243) 202.46/69.84 Obligation: 202.46/69.84 Q DP problem: 202.46/69.84 The TRS P consists of the following rules: 202.46/69.84 202.46/69.84 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.84 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.84 202.46/69.84 The TRS R consists of the following rules: 202.46/69.84 202.46/69.84 mark(zeros) -> active(zeros) 202.46/69.84 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.84 active(zeros) -> mark(cons(0, zeros)) 202.46/69.84 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.84 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.84 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.84 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.84 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.84 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.84 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.84 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.84 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.84 mark(s(X)) -> active(s(mark(X))) 202.46/69.84 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.84 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.84 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.84 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.84 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.84 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.84 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.84 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.84 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.84 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.84 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.84 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.84 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.84 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.84 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.84 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.84 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.84 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.84 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.84 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.84 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.84 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.84 mark(0) -> active(0) 202.46/69.84 mark(tt) -> active(tt) 202.46/69.84 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.84 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.84 mark(isNat(X)) -> active(isNat(X)) 202.46/69.84 mark(length(X)) -> active(length(mark(X))) 202.46/69.84 mark(nil) -> active(nil) 202.46/69.84 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.84 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.84 take(mark(X1), X2) -> take(X1, X2) 202.46/69.84 take(active(X1), X2) -> take(X1, X2) 202.46/69.84 take(X1, active(X2)) -> take(X1, X2) 202.46/69.84 active(U11(tt)) -> mark(tt) 202.46/69.84 active(U21(tt)) -> mark(tt) 202.46/69.84 active(U31(tt)) -> mark(tt) 202.46/69.84 active(U42(tt)) -> mark(tt) 202.46/69.84 active(U52(tt)) -> mark(tt) 202.46/69.84 active(U62(tt)) -> mark(tt) 202.46/69.84 active(isNat(0)) -> mark(tt) 202.46/69.84 active(isNatIList(zeros)) -> mark(tt) 202.46/69.84 active(isNatList(nil)) -> mark(tt) 202.46/69.84 length(active(X)) -> length(X) 202.46/69.84 length(mark(X)) -> length(X) 202.46/69.84 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.84 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.84 U42(active(X)) -> U42(X) 202.46/69.84 U42(mark(X)) -> U42(X) 202.46/69.84 U52(active(X)) -> U52(X) 202.46/69.84 U52(mark(X)) -> U52(X) 202.46/69.84 U62(active(X)) -> U62(X) 202.46/69.84 U62(mark(X)) -> U62(X) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 s(active(X)) -> s(X) 202.46/69.84 s(mark(X)) -> s(X) 202.46/69.84 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U11(active(X)) -> U11(X) 202.46/69.84 U11(mark(X)) -> U11(X) 202.46/69.84 U21(active(X)) -> U21(X) 202.46/69.84 U21(mark(X)) -> U21(X) 202.46/69.84 U31(active(X)) -> U31(X) 202.46/69.84 U31(mark(X)) -> U31(X) 202.46/69.84 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.84 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.84 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.84 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.84 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.84 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.84 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.84 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 U81(active(X)) -> U81(X) 202.46/69.84 U81(mark(X)) -> U81(X) 202.46/69.84 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 202.46/69.84 The set Q consists of the following terms: 202.46/69.84 202.46/69.84 active(zeros) 202.46/69.84 active(U11(tt)) 202.46/69.84 active(U21(tt)) 202.46/69.84 active(U31(tt)) 202.46/69.84 active(U41(tt, x0)) 202.46/69.84 active(U42(tt)) 202.46/69.84 active(U51(tt, x0)) 202.46/69.84 active(U52(tt)) 202.46/69.84 active(U61(tt, x0)) 202.46/69.84 active(U62(tt)) 202.46/69.84 active(U71(tt, x0, x1)) 202.46/69.84 active(U72(tt, x0)) 202.46/69.84 active(U81(tt)) 202.46/69.84 active(U91(tt, x0, x1, x2)) 202.46/69.84 active(U92(tt, x0, x1, x2)) 202.46/69.84 active(U93(tt, x0, x1, x2)) 202.46/69.84 active(isNat(0)) 202.46/69.84 active(isNat(length(x0))) 202.46/69.84 active(isNat(s(x0))) 202.46/69.84 active(isNatIList(x0)) 202.46/69.84 active(isNatList(nil)) 202.46/69.84 active(isNatList(cons(x0, x1))) 202.46/69.84 active(isNatList(take(x0, x1))) 202.46/69.84 active(length(nil)) 202.46/69.84 active(length(cons(x0, x1))) 202.46/69.84 active(take(0, x0)) 202.46/69.84 active(take(s(x0), cons(x1, x2))) 202.46/69.84 mark(zeros) 202.46/69.84 mark(cons(x0, x1)) 202.46/69.84 mark(0) 202.46/69.84 mark(U11(x0)) 202.46/69.84 mark(tt) 202.46/69.84 mark(U21(x0)) 202.46/69.84 mark(U31(x0)) 202.46/69.84 mark(U41(x0, x1)) 202.46/69.84 mark(U42(x0)) 202.46/69.84 mark(isNatIList(x0)) 202.46/69.84 mark(U51(x0, x1)) 202.46/69.84 mark(U52(x0)) 202.46/69.84 mark(isNatList(x0)) 202.46/69.84 mark(U61(x0, x1)) 202.46/69.84 mark(U62(x0)) 202.46/69.84 mark(U71(x0, x1, x2)) 202.46/69.84 mark(U72(x0, x1)) 202.46/69.84 mark(isNat(x0)) 202.46/69.84 mark(s(x0)) 202.46/69.84 mark(length(x0)) 202.46/69.84 mark(U81(x0)) 202.46/69.84 mark(nil) 202.46/69.84 mark(U91(x0, x1, x2, x3)) 202.46/69.84 mark(U92(x0, x1, x2, x3)) 202.46/69.84 mark(U93(x0, x1, x2, x3)) 202.46/69.84 mark(take(x0, x1)) 202.46/69.84 cons(mark(x0), x1) 202.46/69.84 cons(x0, mark(x1)) 202.46/69.84 cons(active(x0), x1) 202.46/69.84 cons(x0, active(x1)) 202.46/69.84 U11(mark(x0)) 202.46/69.84 U11(active(x0)) 202.46/69.84 U21(mark(x0)) 202.46/69.84 U21(active(x0)) 202.46/69.84 U31(mark(x0)) 202.46/69.84 U31(active(x0)) 202.46/69.84 U41(mark(x0), x1) 202.46/69.84 U41(x0, mark(x1)) 202.46/69.84 U41(active(x0), x1) 202.46/69.84 U41(x0, active(x1)) 202.46/69.84 U42(mark(x0)) 202.46/69.84 U42(active(x0)) 202.46/69.84 isNatIList(mark(x0)) 202.46/69.84 isNatIList(active(x0)) 202.46/69.84 U51(mark(x0), x1) 202.46/69.84 U51(x0, mark(x1)) 202.46/69.84 U51(active(x0), x1) 202.46/69.84 U51(x0, active(x1)) 202.46/69.84 U52(mark(x0)) 202.46/69.84 U52(active(x0)) 202.46/69.84 isNatList(mark(x0)) 202.46/69.84 isNatList(active(x0)) 202.46/69.84 U61(mark(x0), x1) 202.46/69.84 U61(x0, mark(x1)) 202.46/69.84 U61(active(x0), x1) 202.46/69.84 U61(x0, active(x1)) 202.46/69.84 U62(mark(x0)) 202.46/69.84 U62(active(x0)) 202.46/69.84 U71(mark(x0), x1, x2) 202.46/69.84 U71(x0, mark(x1), x2) 202.46/69.84 U71(x0, x1, mark(x2)) 202.46/69.84 U71(active(x0), x1, x2) 202.46/69.84 U71(x0, active(x1), x2) 202.46/69.84 U71(x0, x1, active(x2)) 202.46/69.84 U72(mark(x0), x1) 202.46/69.84 U72(x0, mark(x1)) 202.46/69.84 U72(active(x0), x1) 202.46/69.84 U72(x0, active(x1)) 202.46/69.84 isNat(mark(x0)) 202.46/69.84 isNat(active(x0)) 202.46/69.84 s(mark(x0)) 202.46/69.84 s(active(x0)) 202.46/69.84 length(mark(x0)) 202.46/69.84 length(active(x0)) 202.46/69.84 U81(mark(x0)) 202.46/69.84 U81(active(x0)) 202.46/69.84 U91(mark(x0), x1, x2, x3) 202.46/69.84 U91(x0, mark(x1), x2, x3) 202.46/69.84 U91(x0, x1, mark(x2), x3) 202.46/69.84 U91(x0, x1, x2, mark(x3)) 202.46/69.84 U91(active(x0), x1, x2, x3) 202.46/69.84 U91(x0, active(x1), x2, x3) 202.46/69.84 U91(x0, x1, active(x2), x3) 202.46/69.84 U91(x0, x1, x2, active(x3)) 202.46/69.84 U92(mark(x0), x1, x2, x3) 202.46/69.84 U92(x0, mark(x1), x2, x3) 202.46/69.84 U92(x0, x1, mark(x2), x3) 202.46/69.84 U92(x0, x1, x2, mark(x3)) 202.46/69.84 U92(active(x0), x1, x2, x3) 202.46/69.84 U92(x0, active(x1), x2, x3) 202.46/69.84 U92(x0, x1, active(x2), x3) 202.46/69.84 U92(x0, x1, x2, active(x3)) 202.46/69.84 U93(mark(x0), x1, x2, x3) 202.46/69.84 U93(x0, mark(x1), x2, x3) 202.46/69.84 U93(x0, x1, mark(x2), x3) 202.46/69.84 U93(x0, x1, x2, mark(x3)) 202.46/69.84 U93(active(x0), x1, x2, x3) 202.46/69.84 U93(x0, active(x1), x2, x3) 202.46/69.84 U93(x0, x1, active(x2), x3) 202.46/69.84 U93(x0, x1, x2, active(x3)) 202.46/69.84 take(mark(x0), x1) 202.46/69.84 take(x0, mark(x1)) 202.46/69.84 take(active(x0), x1) 202.46/69.84 take(x0, active(x1)) 202.46/69.84 202.46/69.84 We have to consider all minimal (P,Q,R)-chains. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (244) QDPOrderProof (EQUIVALENT) 202.46/69.84 We use the reduction pair processor [LPAR04,JAR06]. 202.46/69.84 202.46/69.84 202.46/69.84 The following pairs can be oriented strictly and are deleted. 202.46/69.84 202.46/69.84 ACTIVE(U71(tt, L, N)) -> MARK(U72(isNat(N), L)) 202.46/69.84 MARK(U72(X1, X2)) -> ACTIVE(U72(mark(X1), X2)) 202.46/69.84 The remaining pairs can at least be oriented weakly. 202.46/69.84 Used ordering: Combined order from the following AFS and order. 202.46/69.84 ACTIVE(x1) = x1 202.46/69.84 202.46/69.84 U71(x1, x2, x3) = U71 202.46/69.84 202.46/69.84 MARK(x1) = MARK 202.46/69.84 202.46/69.84 U72(x1, x2) = U72 202.46/69.84 202.46/69.84 202.46/69.84 Knuth-Bendix order [KBO] with precedence:trivial 202.46/69.84 202.46/69.84 and weight map: 202.46/69.84 202.46/69.84 U71=3 202.46/69.84 MARK=2 202.46/69.84 U72=1 202.46/69.84 202.46/69.84 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 202.46/69.84 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 202.46/69.84 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (245) 202.46/69.84 Obligation: 202.46/69.84 Q DP problem: 202.46/69.84 P is empty. 202.46/69.84 The TRS R consists of the following rules: 202.46/69.84 202.46/69.84 mark(zeros) -> active(zeros) 202.46/69.84 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 202.46/69.84 active(zeros) -> mark(cons(0, zeros)) 202.46/69.84 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 202.46/69.84 mark(U42(X)) -> active(U42(mark(X))) 202.46/69.84 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 202.46/69.84 mark(U52(X)) -> active(U52(mark(X))) 202.46/69.84 active(U61(tt, V2)) -> mark(U62(isNatIList(V2))) 202.46/69.84 mark(U62(X)) -> active(U62(mark(X))) 202.46/69.84 active(U71(tt, L, N)) -> mark(U72(isNat(N), L)) 202.46/69.84 mark(U72(X1, X2)) -> active(U72(mark(X1), X2)) 202.46/69.84 active(U72(tt, L)) -> mark(s(length(L))) 202.46/69.84 mark(s(X)) -> active(s(mark(X))) 202.46/69.84 active(U91(tt, IL, M, N)) -> mark(U92(isNat(M), IL, M, N)) 202.46/69.84 mark(U92(X1, X2, X3, X4)) -> active(U92(mark(X1), X2, X3, X4)) 202.46/69.84 active(U92(tt, IL, M, N)) -> mark(U93(isNat(N), IL, M, N)) 202.46/69.84 mark(U93(X1, X2, X3, X4)) -> active(U93(mark(X1), X2, X3, X4)) 202.46/69.84 active(U93(tt, IL, M, N)) -> mark(cons(N, take(M, IL))) 202.46/69.84 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 202.46/69.84 mark(U11(X)) -> active(U11(mark(X))) 202.46/69.84 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 202.46/69.84 mark(U21(X)) -> active(U21(mark(X))) 202.46/69.84 active(isNatIList(V)) -> mark(U31(isNatList(V))) 202.46/69.84 mark(U31(X)) -> active(U31(mark(X))) 202.46/69.84 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 202.46/69.84 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 202.46/69.84 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 202.46/69.84 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 202.46/69.84 active(isNatList(take(V1, V2))) -> mark(U61(isNat(V1), V2)) 202.46/69.84 mark(U61(X1, X2)) -> active(U61(mark(X1), X2)) 202.46/69.84 active(length(cons(N, L))) -> mark(U71(isNatList(L), L, N)) 202.46/69.84 mark(U71(X1, X2, X3)) -> active(U71(mark(X1), X2, X3)) 202.46/69.84 mark(U81(X)) -> active(U81(mark(X))) 202.46/69.84 active(take(s(M), cons(N, IL))) -> mark(U91(isNatIList(IL), IL, M, N)) 202.46/69.84 mark(U91(X1, X2, X3, X4)) -> active(U91(mark(X1), X2, X3, X4)) 202.46/69.84 mark(0) -> active(0) 202.46/69.84 mark(tt) -> active(tt) 202.46/69.84 mark(isNatIList(X)) -> active(isNatIList(X)) 202.46/69.84 mark(isNatList(X)) -> active(isNatList(X)) 202.46/69.84 mark(isNat(X)) -> active(isNat(X)) 202.46/69.84 mark(length(X)) -> active(length(mark(X))) 202.46/69.84 mark(nil) -> active(nil) 202.46/69.84 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 202.46/69.84 take(X1, mark(X2)) -> take(X1, X2) 202.46/69.84 take(mark(X1), X2) -> take(X1, X2) 202.46/69.84 take(active(X1), X2) -> take(X1, X2) 202.46/69.84 take(X1, active(X2)) -> take(X1, X2) 202.46/69.84 active(U11(tt)) -> mark(tt) 202.46/69.84 active(U21(tt)) -> mark(tt) 202.46/69.84 active(U31(tt)) -> mark(tt) 202.46/69.84 active(U42(tt)) -> mark(tt) 202.46/69.84 active(U52(tt)) -> mark(tt) 202.46/69.84 active(U62(tt)) -> mark(tt) 202.46/69.84 active(isNat(0)) -> mark(tt) 202.46/69.84 active(isNatIList(zeros)) -> mark(tt) 202.46/69.84 active(isNatList(nil)) -> mark(tt) 202.46/69.84 length(active(X)) -> length(X) 202.46/69.84 length(mark(X)) -> length(X) 202.46/69.84 cons(X1, mark(X2)) -> cons(X1, X2) 202.46/69.84 cons(mark(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(active(X1), X2) -> cons(X1, X2) 202.46/69.84 cons(X1, active(X2)) -> cons(X1, X2) 202.46/69.84 U42(active(X)) -> U42(X) 202.46/69.84 U42(mark(X)) -> U42(X) 202.46/69.84 U52(active(X)) -> U52(X) 202.46/69.84 U52(mark(X)) -> U52(X) 202.46/69.84 U62(active(X)) -> U62(X) 202.46/69.84 U62(mark(X)) -> U62(X) 202.46/69.84 U72(X1, mark(X2)) -> U72(X1, X2) 202.46/69.84 U72(mark(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(active(X1), X2) -> U72(X1, X2) 202.46/69.84 U72(X1, active(X2)) -> U72(X1, X2) 202.46/69.84 s(active(X)) -> s(X) 202.46/69.84 s(mark(X)) -> s(X) 202.46/69.84 U92(X1, mark(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(mark(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, mark(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, mark(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(active(X1), X2, X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, active(X2), X3, X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, active(X3), X4) -> U92(X1, X2, X3, X4) 202.46/69.84 U92(X1, X2, X3, active(X4)) -> U92(X1, X2, X3, X4) 202.46/69.84 U93(X1, mark(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(mark(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, mark(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, mark(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(active(X1), X2, X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, active(X2), X3, X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, active(X3), X4) -> U93(X1, X2, X3, X4) 202.46/69.84 U93(X1, X2, X3, active(X4)) -> U93(X1, X2, X3, X4) 202.46/69.84 U11(active(X)) -> U11(X) 202.46/69.84 U11(mark(X)) -> U11(X) 202.46/69.84 U21(active(X)) -> U21(X) 202.46/69.84 U21(mark(X)) -> U21(X) 202.46/69.84 U31(active(X)) -> U31(X) 202.46/69.84 U31(mark(X)) -> U31(X) 202.46/69.84 U41(X1, mark(X2)) -> U41(X1, X2) 202.46/69.84 U41(mark(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(active(X1), X2) -> U41(X1, X2) 202.46/69.84 U41(X1, active(X2)) -> U41(X1, X2) 202.46/69.84 U51(X1, mark(X2)) -> U51(X1, X2) 202.46/69.84 U51(mark(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(active(X1), X2) -> U51(X1, X2) 202.46/69.84 U51(X1, active(X2)) -> U51(X1, X2) 202.46/69.84 U61(X1, mark(X2)) -> U61(X1, X2) 202.46/69.84 U61(mark(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(active(X1), X2) -> U61(X1, X2) 202.46/69.84 U61(X1, active(X2)) -> U61(X1, X2) 202.46/69.84 U71(X1, mark(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(mark(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, mark(X3)) -> U71(X1, X2, X3) 202.46/69.84 U71(active(X1), X2, X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, active(X2), X3) -> U71(X1, X2, X3) 202.46/69.84 U71(X1, X2, active(X3)) -> U71(X1, X2, X3) 202.46/69.84 U81(active(X)) -> U81(X) 202.46/69.84 U81(mark(X)) -> U81(X) 202.46/69.84 U91(X1, mark(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(mark(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, mark(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, mark(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(active(X1), X2, X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, active(X2), X3, X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, active(X3), X4) -> U91(X1, X2, X3, X4) 202.46/69.84 U91(X1, X2, X3, active(X4)) -> U91(X1, X2, X3, X4) 202.46/69.84 202.46/69.84 The set Q consists of the following terms: 202.46/69.84 202.46/69.84 active(zeros) 202.46/69.84 active(U11(tt)) 202.46/69.84 active(U21(tt)) 202.46/69.84 active(U31(tt)) 202.46/69.84 active(U41(tt, x0)) 202.46/69.84 active(U42(tt)) 202.46/69.84 active(U51(tt, x0)) 202.46/69.84 active(U52(tt)) 202.46/69.84 active(U61(tt, x0)) 202.46/69.84 active(U62(tt)) 202.46/69.84 active(U71(tt, x0, x1)) 202.46/69.84 active(U72(tt, x0)) 202.46/69.84 active(U81(tt)) 202.46/69.84 active(U91(tt, x0, x1, x2)) 202.46/69.84 active(U92(tt, x0, x1, x2)) 202.46/69.84 active(U93(tt, x0, x1, x2)) 202.46/69.84 active(isNat(0)) 202.46/69.84 active(isNat(length(x0))) 202.46/69.84 active(isNat(s(x0))) 202.46/69.84 active(isNatIList(x0)) 202.46/69.84 active(isNatList(nil)) 202.46/69.84 active(isNatList(cons(x0, x1))) 202.46/69.84 active(isNatList(take(x0, x1))) 202.46/69.84 active(length(nil)) 202.46/69.84 active(length(cons(x0, x1))) 202.46/69.84 active(take(0, x0)) 202.46/69.84 active(take(s(x0), cons(x1, x2))) 202.46/69.84 mark(zeros) 202.46/69.84 mark(cons(x0, x1)) 202.46/69.84 mark(0) 202.46/69.84 mark(U11(x0)) 202.46/69.84 mark(tt) 202.46/69.84 mark(U21(x0)) 202.46/69.84 mark(U31(x0)) 202.46/69.84 mark(U41(x0, x1)) 202.46/69.84 mark(U42(x0)) 202.46/69.84 mark(isNatIList(x0)) 202.46/69.84 mark(U51(x0, x1)) 202.46/69.84 mark(U52(x0)) 202.46/69.84 mark(isNatList(x0)) 202.46/69.84 mark(U61(x0, x1)) 202.46/69.84 mark(U62(x0)) 202.46/69.84 mark(U71(x0, x1, x2)) 202.46/69.84 mark(U72(x0, x1)) 202.46/69.84 mark(isNat(x0)) 202.46/69.84 mark(s(x0)) 202.46/69.84 mark(length(x0)) 202.46/69.84 mark(U81(x0)) 202.46/69.84 mark(nil) 202.46/69.84 mark(U91(x0, x1, x2, x3)) 202.46/69.84 mark(U92(x0, x1, x2, x3)) 202.46/69.84 mark(U93(x0, x1, x2, x3)) 202.46/69.84 mark(take(x0, x1)) 202.46/69.84 cons(mark(x0), x1) 202.46/69.84 cons(x0, mark(x1)) 202.46/69.84 cons(active(x0), x1) 202.46/69.84 cons(x0, active(x1)) 202.46/69.84 U11(mark(x0)) 202.46/69.84 U11(active(x0)) 202.46/69.84 U21(mark(x0)) 202.46/69.84 U21(active(x0)) 202.46/69.84 U31(mark(x0)) 202.46/69.84 U31(active(x0)) 202.46/69.84 U41(mark(x0), x1) 202.46/69.84 U41(x0, mark(x1)) 202.46/69.84 U41(active(x0), x1) 202.46/69.84 U41(x0, active(x1)) 202.46/69.84 U42(mark(x0)) 202.46/69.84 U42(active(x0)) 202.46/69.84 isNatIList(mark(x0)) 202.46/69.84 isNatIList(active(x0)) 202.46/69.84 U51(mark(x0), x1) 202.46/69.84 U51(x0, mark(x1)) 202.46/69.84 U51(active(x0), x1) 202.46/69.84 U51(x0, active(x1)) 202.46/69.84 U52(mark(x0)) 202.46/69.84 U52(active(x0)) 202.46/69.84 isNatList(mark(x0)) 202.46/69.84 isNatList(active(x0)) 202.46/69.84 U61(mark(x0), x1) 202.46/69.84 U61(x0, mark(x1)) 202.46/69.84 U61(active(x0), x1) 202.46/69.84 U61(x0, active(x1)) 202.46/69.84 U62(mark(x0)) 202.46/69.84 U62(active(x0)) 202.46/69.84 U71(mark(x0), x1, x2) 202.46/69.84 U71(x0, mark(x1), x2) 202.46/69.84 U71(x0, x1, mark(x2)) 202.46/69.84 U71(active(x0), x1, x2) 202.46/69.84 U71(x0, active(x1), x2) 202.46/69.84 U71(x0, x1, active(x2)) 202.46/69.84 U72(mark(x0), x1) 202.46/69.84 U72(x0, mark(x1)) 202.46/69.84 U72(active(x0), x1) 202.46/69.84 U72(x0, active(x1)) 202.46/69.84 isNat(mark(x0)) 202.46/69.84 isNat(active(x0)) 202.46/69.84 s(mark(x0)) 202.46/69.84 s(active(x0)) 202.46/69.84 length(mark(x0)) 202.46/69.84 length(active(x0)) 202.46/69.84 U81(mark(x0)) 202.46/69.84 U81(active(x0)) 202.46/69.84 U91(mark(x0), x1, x2, x3) 202.46/69.84 U91(x0, mark(x1), x2, x3) 202.46/69.84 U91(x0, x1, mark(x2), x3) 202.46/69.84 U91(x0, x1, x2, mark(x3)) 202.46/69.84 U91(active(x0), x1, x2, x3) 202.46/69.84 U91(x0, active(x1), x2, x3) 202.46/69.84 U91(x0, x1, active(x2), x3) 202.46/69.84 U91(x0, x1, x2, active(x3)) 202.46/69.84 U92(mark(x0), x1, x2, x3) 202.46/69.84 U92(x0, mark(x1), x2, x3) 202.46/69.84 U92(x0, x1, mark(x2), x3) 202.46/69.84 U92(x0, x1, x2, mark(x3)) 202.46/69.84 U92(active(x0), x1, x2, x3) 202.46/69.84 U92(x0, active(x1), x2, x3) 202.46/69.84 U92(x0, x1, active(x2), x3) 202.46/69.84 U92(x0, x1, x2, active(x3)) 202.46/69.84 U93(mark(x0), x1, x2, x3) 202.46/69.84 U93(x0, mark(x1), x2, x3) 202.46/69.84 U93(x0, x1, mark(x2), x3) 202.46/69.84 U93(x0, x1, x2, mark(x3)) 202.46/69.84 U93(active(x0), x1, x2, x3) 202.46/69.84 U93(x0, active(x1), x2, x3) 202.46/69.84 U93(x0, x1, active(x2), x3) 202.46/69.84 U93(x0, x1, x2, active(x3)) 202.46/69.84 take(mark(x0), x1) 202.46/69.84 take(x0, mark(x1)) 202.46/69.84 take(active(x0), x1) 202.46/69.84 take(x0, active(x1)) 202.46/69.84 202.46/69.84 We have to consider all minimal (P,Q,R)-chains. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (246) PisEmptyProof (EQUIVALENT) 202.46/69.84 The TRS P is empty. Hence, there is no (P,Q,R) chain. 202.46/69.84 ---------------------------------------- 202.46/69.84 202.46/69.84 (247) 202.46/69.84 YES 202.56/69.89 EOF