/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 350 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) QDP (6) UsableRulesProof [EQUIVALENT, 0 ms] (7) QDP (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] (9) YES (10) QDP (11) UsableRulesProof [EQUIVALENT, 0 ms] (12) QDP (13) QDPSizeChangeProof [EQUIVALENT, 0 ms] (14) YES (15) QDP (16) UsableRulesProof [EQUIVALENT, 0 ms] (17) QDP (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] (19) YES (20) QDP (21) UsableRulesProof [EQUIVALENT, 0 ms] (22) QDP (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] (24) YES (25) QDP (26) UsableRulesProof [EQUIVALENT, 0 ms] (27) QDP (28) QDPSizeChangeProof [EQUIVALENT, 0 ms] (29) YES (30) QDP (31) UsableRulesProof [EQUIVALENT, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) QDP (36) UsableRulesProof [EQUIVALENT, 1 ms] (37) QDP (38) QDPSizeChangeProof [EQUIVALENT, 0 ms] (39) YES (40) QDP (41) UsableRulesProof [EQUIVALENT, 0 ms] (42) QDP (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] (44) YES (45) QDP (46) UsableRulesProof [EQUIVALENT, 0 ms] (47) QDP (48) QDPSizeChangeProof [EQUIVALENT, 0 ms] (49) YES (50) QDP (51) UsableRulesProof [EQUIVALENT, 0 ms] (52) QDP (53) QDPSizeChangeProof [EQUIVALENT, 0 ms] (54) YES (55) QDP (56) UsableRulesProof [EQUIVALENT, 0 ms] (57) QDP (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] (59) YES (60) QDP (61) UsableRulesProof [EQUIVALENT, 0 ms] (62) QDP (63) QDPSizeChangeProof [EQUIVALENT, 0 ms] (64) YES (65) QDP (66) UsableRulesProof [EQUIVALENT, 0 ms] (67) QDP (68) QDPSizeChangeProof [EQUIVALENT, 0 ms] (69) YES (70) QDP (71) UsableRulesProof [EQUIVALENT, 0 ms] (72) QDP (73) QDPSizeChangeProof [EQUIVALENT, 0 ms] (74) YES (75) QDP (76) UsableRulesProof [EQUIVALENT, 0 ms] (77) QDP (78) QDPSizeChangeProof [EQUIVALENT, 0 ms] (79) YES (80) QDP (81) UsableRulesProof [EQUIVALENT, 0 ms] (82) QDP (83) QDPSizeChangeProof [EQUIVALENT, 0 ms] (84) YES (85) QDP (86) UsableRulesProof [EQUIVALENT, 0 ms] (87) QDP (88) QDPSizeChangeProof [EQUIVALENT, 0 ms] (89) YES (90) QDP (91) UsableRulesProof [EQUIVALENT, 0 ms] (92) QDP (93) QDPSizeChangeProof [EQUIVALENT, 0 ms] (94) YES (95) QDP (96) UsableRulesProof [EQUIVALENT, 0 ms] (97) QDP (98) QDPSizeChangeProof [EQUIVALENT, 0 ms] (99) YES (100) QDP (101) UsableRulesProof [EQUIVALENT, 0 ms] (102) QDP (103) QDPSizeChangeProof [EQUIVALENT, 0 ms] (104) YES (105) QDP (106) UsableRulesProof [EQUIVALENT, 0 ms] (107) QDP (108) QDPSizeChangeProof [EQUIVALENT, 0 ms] (109) YES (110) QDP (111) UsableRulesProof [EQUIVALENT, 0 ms] (112) QDP (113) QDPSizeChangeProof [EQUIVALENT, 0 ms] (114) YES (115) QDP (116) UsableRulesProof [EQUIVALENT, 0 ms] (117) QDP (118) QDPSizeChangeProof [EQUIVALENT, 0 ms] (119) YES (120) QDP (121) UsableRulesProof [EQUIVALENT, 0 ms] (122) QDP (123) QDPSizeChangeProof [EQUIVALENT, 0 ms] (124) YES (125) QDP (126) UsableRulesProof [EQUIVALENT, 0 ms] (127) QDP (128) QDPSizeChangeProof [EQUIVALENT, 0 ms] (129) YES (130) QDP (131) UsableRulesProof [EQUIVALENT, 0 ms] (132) QDP (133) QDPSizeChangeProof [EQUIVALENT, 0 ms] (134) YES (135) QDP (136) UsableRulesProof [EQUIVALENT, 0 ms] (137) QDP (138) QDPSizeChangeProof [EQUIVALENT, 0 ms] (139) YES (140) QDP (141) UsableRulesProof [EQUIVALENT, 0 ms] (142) QDP (143) QDPSizeChangeProof [EQUIVALENT, 0 ms] (144) YES (145) QDP (146) UsableRulesProof [EQUIVALENT, 0 ms] (147) QDP (148) QDPSizeChangeProof [EQUIVALENT, 0 ms] (149) YES (150) QDP (151) UsableRulesProof [EQUIVALENT, 0 ms] (152) QDP (153) QDPSizeChangeProof [EQUIVALENT, 0 ms] (154) YES (155) QDP (156) UsableRulesProof [EQUIVALENT, 0 ms] (157) QDP (158) QDPSizeChangeProof [EQUIVALENT, 0 ms] (159) YES (160) QDP (161) UsableRulesProof [EQUIVALENT, 0 ms] (162) QDP (163) QDPSizeChangeProof [EQUIVALENT, 0 ms] (164) YES (165) QDP (166) UsableRulesProof [EQUIVALENT, 0 ms] (167) QDP (168) QDPSizeChangeProof [EQUIVALENT, 0 ms] (169) YES (170) QDP (171) UsableRulesProof [EQUIVALENT, 0 ms] (172) QDP (173) QDPSizeChangeProof [EQUIVALENT, 0 ms] (174) YES (175) QDP (176) UsableRulesProof [EQUIVALENT, 0 ms] (177) QDP (178) QDPSizeChangeProof [EQUIVALENT, 0 ms] (179) YES (180) QDP (181) UsableRulesProof [EQUIVALENT, 0 ms] (182) QDP (183) QDPSizeChangeProof [EQUIVALENT, 0 ms] (184) YES (185) QDP (186) UsableRulesProof [EQUIVALENT, 0 ms] (187) QDP (188) QDPSizeChangeProof [EQUIVALENT, 0 ms] (189) YES (190) QDP (191) QDPOrderProof [EQUIVALENT, 2036 ms] (192) QDP (193) QDPOrderProof [EQUIVALENT, 1471 ms] (194) QDP (195) QDPOrderProof [EQUIVALENT, 2672 ms] (196) QDP (197) QDPOrderProof [EQUIVALENT, 1535 ms] (198) QDP (199) DependencyGraphProof [EQUIVALENT, 0 ms] (200) QDP (201) QDPOrderProof [EQUIVALENT, 914 ms] (202) QDP (203) QDPOrderProof [EQUIVALENT, 1832 ms] (204) QDP (205) QDPOrderProof [EQUIVALENT, 1301 ms] (206) QDP (207) QDPOrderProof [EQUIVALENT, 2328 ms] (208) QDP (209) QDPOrderProof [EQUIVALENT, 1070 ms] (210) QDP (211) QDPOrderProof [EQUIVALENT, 1230 ms] (212) QDP (213) QDPOrderProof [EQUIVALENT, 2062 ms] (214) QDP (215) QDPOrderProof [EQUIVALENT, 2083 ms] (216) QDP (217) QDPOrderProof [EQUIVALENT, 2463 ms] (218) QDP (219) QDPOrderProof [EQUIVALENT, 1069 ms] (220) QDP (221) QDPOrderProof [EQUIVALENT, 2705 ms] (222) QDP (223) QDPOrderProof [EQUIVALENT, 1235 ms] (224) QDP (225) QDPOrderProof [EQUIVALENT, 1774 ms] (226) QDP (227) QDPOrderProof [EQUIVALENT, 1079 ms] (228) QDP (229) QDPOrderProof [EQUIVALENT, 1360 ms] (230) QDP (231) QDPOrderProof [EQUIVALENT, 2309 ms] (232) QDP (233) QDPOrderProof [EQUIVALENT, 948 ms] (234) QDP (235) QDPOrderProof [EQUIVALENT, 1111 ms] (236) QDP (237) QDPOrderProof [EQUIVALENT, 902 ms] (238) QDP (239) QDPOrderProof [EQUIVALENT, 1085 ms] (240) QDP (241) QDPOrderProof [EQUIVALENT, 2228 ms] (242) QDP (243) QDPOrderProof [EQUIVALENT, 997 ms] (244) QDP (245) QDPOrderProof [EQUIVALENT, 1117 ms] (246) QDP (247) QDPOrderProof [EQUIVALENT, 1005 ms] (248) QDP (249) QDPOrderProof [EQUIVALENT, 994 ms] (250) QDP (251) QDPOrderProof [EQUIVALENT, 1012 ms] (252) QDP (253) QDPOrderProof [EQUIVALENT, 1171 ms] (254) QDP (255) QDPOrderProof [EQUIVALENT, 949 ms] (256) QDP (257) QDPOrderProof [EQUIVALENT, 1199 ms] (258) QDP (259) QDPOrderProof [EQUIVALENT, 826 ms] (260) QDP (261) QDPOrderProof [EQUIVALENT, 1115 ms] (262) QDP (263) QDPOrderProof [EQUIVALENT, 875 ms] (264) QDP (265) QDPOrderProof [EQUIVALENT, 1253 ms] (266) QDP (267) QDPOrderProof [EQUIVALENT, 1751 ms] (268) QDP (269) QDPOrderProof [EQUIVALENT, 997 ms] (270) QDP (271) QDPOrderProof [EQUIVALENT, 1101 ms] (272) QDP (273) QDPOrderProof [EQUIVALENT, 799 ms] (274) QDP (275) QDPOrderProof [EQUIVALENT, 908 ms] (276) QDP (277) QDPOrderProof [EQUIVALENT, 805 ms] (278) QDP (279) QDPOrderProof [EQUIVALENT, 911 ms] (280) QDP (281) QDPOrderProof [EQUIVALENT, 703 ms] (282) QDP (283) QDPOrderProof [EQUIVALENT, 776 ms] (284) QDP (285) QDPOrderProof [EQUIVALENT, 790 ms] (286) QDP (287) QDPOrderProof [EQUIVALENT, 819 ms] (288) QDP (289) QDPOrderProof [EQUIVALENT, 929 ms] (290) QDP (291) QDPOrderProof [EQUIVALENT, 701 ms] (292) QDP (293) QDPOrderProof [EQUIVALENT, 2345 ms] (294) QDP (295) QDPOrderProof [EQUIVALENT, 835 ms] (296) QDP (297) QDPOrderProof [EQUIVALENT, 762 ms] (298) QDP (299) QDPOrderProof [EQUIVALENT, 732 ms] (300) QDP (301) QDPOrderProof [EQUIVALENT, 799 ms] (302) QDP (303) QDPOrderProof [EQUIVALENT, 613 ms] (304) QDP (305) QDPOrderProof [EQUIVALENT, 682 ms] (306) QDP (307) QDPOrderProof [EQUIVALENT, 360 ms] (308) QDP (309) DependencyGraphProof [EQUIVALENT, 0 ms] (310) TRUE ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(zeros) -> MARK(cons(0, zeros)) ACTIVE(zeros) -> CONS(0, zeros) ACTIVE(U11(tt, V1)) -> MARK(U12(isNatIListKind(V1), V1)) ACTIVE(U11(tt, V1)) -> U12^1(isNatIListKind(V1), V1) ACTIVE(U11(tt, V1)) -> ISNATILISTKIND(V1) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) ACTIVE(U12(tt, V1)) -> U13^1(isNatList(V1)) ACTIVE(U12(tt, V1)) -> ISNATLIST(V1) ACTIVE(U13(tt)) -> MARK(tt) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) ACTIVE(U21(tt, V1)) -> U22^1(isNatKind(V1), V1) ACTIVE(U21(tt, V1)) -> ISNATKIND(V1) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U22(tt, V1)) -> U23^1(isNat(V1)) ACTIVE(U22(tt, V1)) -> ISNAT(V1) ACTIVE(U23(tt)) -> MARK(tt) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) ACTIVE(U31(tt, V)) -> U32^1(isNatIListKind(V), V) ACTIVE(U31(tt, V)) -> ISNATILISTKIND(V) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) ACTIVE(U32(tt, V)) -> U33^1(isNatList(V)) ACTIVE(U32(tt, V)) -> ISNATLIST(V) ACTIVE(U33(tt)) -> MARK(tt) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U41(tt, V1, V2)) -> U42^1(isNatKind(V1), V1, V2) ACTIVE(U41(tt, V1, V2)) -> ISNATKIND(V1) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> U43^1(isNatIListKind(V2), V1, V2) ACTIVE(U42(tt, V1, V2)) -> ISNATILISTKIND(V2) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> U44^1(isNatIListKind(V2), V1, V2) ACTIVE(U43(tt, V1, V2)) -> ISNATILISTKIND(V2) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U44(tt, V1, V2)) -> U45^1(isNat(V1), V2) ACTIVE(U44(tt, V1, V2)) -> ISNAT(V1) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) ACTIVE(U45(tt, V2)) -> U46^1(isNatIList(V2)) ACTIVE(U45(tt, V2)) -> ISNATILIST(V2) ACTIVE(U46(tt)) -> MARK(tt) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) ACTIVE(U51(tt, V2)) -> U52^1(isNatIListKind(V2)) ACTIVE(U51(tt, V2)) -> ISNATILISTKIND(V2) ACTIVE(U52(tt)) -> MARK(tt) ACTIVE(U61(tt)) -> MARK(tt) ACTIVE(U71(tt)) -> MARK(tt) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U81(tt, V1, V2)) -> U82^1(isNatKind(V1), V1, V2) ACTIVE(U81(tt, V1, V2)) -> ISNATKIND(V1) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> U83^1(isNatIListKind(V2), V1, V2) ACTIVE(U82(tt, V1, V2)) -> ISNATILISTKIND(V2) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> U84^1(isNatIListKind(V2), V1, V2) ACTIVE(U83(tt, V1, V2)) -> ISNATILISTKIND(V2) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U84(tt, V1, V2)) -> U85^1(isNat(V1), V2) ACTIVE(U84(tt, V1, V2)) -> ISNAT(V1) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U85(tt, V2)) -> U86^1(isNatList(V2)) ACTIVE(U85(tt, V2)) -> ISNATLIST(V2) ACTIVE(U86(tt)) -> MARK(tt) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U91(tt, L, N)) -> U92^1(isNatIListKind(L), L, N) ACTIVE(U91(tt, L, N)) -> ISNATILISTKIND(L) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U92(tt, L, N)) -> U93^1(isNat(N), L, N) ACTIVE(U92(tt, L, N)) -> ISNAT(N) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U93(tt, L, N)) -> U94^1(isNatKind(N), L) ACTIVE(U93(tt, L, N)) -> ISNATKIND(N) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) ACTIVE(U94(tt, L)) -> S(length(L)) ACTIVE(U94(tt, L)) -> LENGTH(L) ACTIVE(isNat(0)) -> MARK(tt) ACTIVE(isNat(length(V1))) -> MARK(U11(isNatIListKind(V1), V1)) ACTIVE(isNat(length(V1))) -> U11^1(isNatIListKind(V1), V1) ACTIVE(isNat(length(V1))) -> ISNATILISTKIND(V1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(isNat(s(V1))) -> U21^1(isNatKind(V1), V1) ACTIVE(isNat(s(V1))) -> ISNATKIND(V1) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) ACTIVE(isNatIList(V)) -> U31^1(isNatIListKind(V), V) ACTIVE(isNatIList(V)) -> ISNATILISTKIND(V) ACTIVE(isNatIList(zeros)) -> MARK(tt) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) ACTIVE(isNatIList(cons(V1, V2))) -> U41^1(isNatKind(V1), V1, V2) ACTIVE(isNatIList(cons(V1, V2))) -> ISNATKIND(V1) ACTIVE(isNatIListKind(nil)) -> MARK(tt) ACTIVE(isNatIListKind(zeros)) -> MARK(tt) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> U51^1(isNatKind(V1), V2) ACTIVE(isNatIListKind(cons(V1, V2))) -> ISNATKIND(V1) ACTIVE(isNatKind(0)) -> MARK(tt) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(length(V1))) -> U61^1(isNatIListKind(V1)) ACTIVE(isNatKind(length(V1))) -> ISNATILISTKIND(V1) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatKind(s(V1))) -> U71^1(isNatKind(V1)) ACTIVE(isNatKind(s(V1))) -> ISNATKIND(V1) ACTIVE(isNatList(nil)) -> MARK(tt) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(isNatList(cons(V1, V2))) -> U81^1(isNatKind(V1), V1, V2) ACTIVE(isNatList(cons(V1, V2))) -> ISNATKIND(V1) ACTIVE(length(nil)) -> MARK(0) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) ACTIVE(length(cons(N, L))) -> U91^1(isNatList(L), L, N) ACTIVE(length(cons(N, L))) -> ISNATLIST(L) MARK(zeros) -> ACTIVE(zeros) MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) MARK(cons(X1, X2)) -> CONS(mark(X1), X2) MARK(cons(X1, X2)) -> MARK(X1) MARK(0) -> ACTIVE(0) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) MARK(U11(X1, X2)) -> U11^1(mark(X1), X2) MARK(U11(X1, X2)) -> MARK(X1) MARK(tt) -> ACTIVE(tt) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) MARK(U12(X1, X2)) -> U12^1(mark(X1), X2) MARK(U12(X1, X2)) -> MARK(X1) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(U13(X)) -> ACTIVE(U13(mark(X))) MARK(U13(X)) -> U13^1(mark(X)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U21(X1, X2)) -> U21^1(mark(X1), X2) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U22(X1, X2)) -> U22^1(mark(X1), X2) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> ACTIVE(U23(mark(X))) MARK(U23(X)) -> U23^1(mark(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) MARK(U31(X1, X2)) -> U31^1(mark(X1), X2) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) MARK(U32(X1, X2)) -> U32^1(mark(X1), X2) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> ACTIVE(U33(mark(X))) MARK(U33(X)) -> U33^1(mark(X)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) MARK(U41(X1, X2, X3)) -> U41^1(mark(X1), X2, X3) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) MARK(U42(X1, X2, X3)) -> U42^1(mark(X1), X2, X3) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U43(X1, X2, X3)) -> U43^1(mark(X1), X2, X3) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> U44^1(mark(X1), X2, X3) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) MARK(U45(X1, X2)) -> U45^1(mark(X1), X2) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> ACTIVE(U46(mark(X))) MARK(U46(X)) -> U46^1(mark(X)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) MARK(U51(X1, X2)) -> U51^1(mark(X1), X2) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> ACTIVE(U52(mark(X))) MARK(U52(X)) -> U52^1(mark(X)) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> ACTIVE(U61(mark(X))) MARK(U61(X)) -> U61^1(mark(X)) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> ACTIVE(U71(mark(X))) MARK(U71(X)) -> U71^1(mark(X)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) MARK(U81(X1, X2, X3)) -> U81^1(mark(X1), X2, X3) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) MARK(U82(X1, X2, X3)) -> U82^1(mark(X1), X2, X3) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) MARK(U83(X1, X2, X3)) -> U83^1(mark(X1), X2, X3) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) MARK(U84(X1, X2, X3)) -> U84^1(mark(X1), X2, X3) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) MARK(U85(X1, X2)) -> U85^1(mark(X1), X2) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> ACTIVE(U86(mark(X))) MARK(U86(X)) -> U86^1(mark(X)) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U91(X1, X2, X3)) -> U91^1(mark(X1), X2, X3) MARK(U91(X1, X2, X3)) -> MARK(X1) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> U92^1(mark(X1), X2, X3) MARK(U92(X1, X2, X3)) -> MARK(X1) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> U93^1(mark(X1), X2, X3) MARK(U93(X1, X2, X3)) -> MARK(X1) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(U94(X1, X2)) -> U94^1(mark(X1), X2) MARK(U94(X1, X2)) -> MARK(X1) MARK(s(X)) -> ACTIVE(s(mark(X))) MARK(s(X)) -> S(mark(X)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) MARK(length(X)) -> LENGTH(mark(X)) MARK(length(X)) -> MARK(X) MARK(nil) -> ACTIVE(nil) CONS(mark(X1), X2) -> CONS(X1, X2) CONS(X1, mark(X2)) -> CONS(X1, X2) CONS(active(X1), X2) -> CONS(X1, X2) CONS(X1, active(X2)) -> CONS(X1, X2) U11^1(mark(X1), X2) -> U11^1(X1, X2) U11^1(X1, mark(X2)) -> U11^1(X1, X2) U11^1(active(X1), X2) -> U11^1(X1, X2) U11^1(X1, active(X2)) -> U11^1(X1, X2) U12^1(mark(X1), X2) -> U12^1(X1, X2) U12^1(X1, mark(X2)) -> U12^1(X1, X2) U12^1(active(X1), X2) -> U12^1(X1, X2) U12^1(X1, active(X2)) -> U12^1(X1, X2) ISNATILISTKIND(mark(X)) -> ISNATILISTKIND(X) ISNATILISTKIND(active(X)) -> ISNATILISTKIND(X) U13^1(mark(X)) -> U13^1(X) U13^1(active(X)) -> U13^1(X) ISNATLIST(mark(X)) -> ISNATLIST(X) ISNATLIST(active(X)) -> ISNATLIST(X) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) ISNATKIND(mark(X)) -> ISNATKIND(X) ISNATKIND(active(X)) -> ISNATKIND(X) U23^1(mark(X)) -> U23^1(X) U23^1(active(X)) -> U23^1(X) ISNAT(mark(X)) -> ISNAT(X) ISNAT(active(X)) -> ISNAT(X) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) U32^1(mark(X1), X2) -> U32^1(X1, X2) U32^1(X1, mark(X2)) -> U32^1(X1, X2) U32^1(active(X1), X2) -> U32^1(X1, X2) U32^1(X1, active(X2)) -> U32^1(X1, X2) U33^1(mark(X)) -> U33^1(X) U33^1(active(X)) -> U33^1(X) U41^1(mark(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, mark(X2), X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, mark(X3)) -> U41^1(X1, X2, X3) U41^1(active(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, active(X2), X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, active(X3)) -> U41^1(X1, X2, X3) U42^1(mark(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, mark(X2), X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, mark(X3)) -> U42^1(X1, X2, X3) U42^1(active(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, active(X2), X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, active(X3)) -> U42^1(X1, X2, X3) U43^1(mark(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, mark(X2), X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, mark(X3)) -> U43^1(X1, X2, X3) U43^1(active(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, active(X2), X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, active(X3)) -> U43^1(X1, X2, X3) U44^1(mark(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, mark(X2), X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, mark(X3)) -> U44^1(X1, X2, X3) U44^1(active(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, active(X2), X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, active(X3)) -> U44^1(X1, X2, X3) U45^1(mark(X1), X2) -> U45^1(X1, X2) U45^1(X1, mark(X2)) -> U45^1(X1, X2) U45^1(active(X1), X2) -> U45^1(X1, X2) U45^1(X1, active(X2)) -> U45^1(X1, X2) U46^1(mark(X)) -> U46^1(X) U46^1(active(X)) -> U46^1(X) ISNATILIST(mark(X)) -> ISNATILIST(X) ISNATILIST(active(X)) -> ISNATILIST(X) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) U52^1(mark(X)) -> U52^1(X) U52^1(active(X)) -> U52^1(X) U61^1(mark(X)) -> U61^1(X) U61^1(active(X)) -> U61^1(X) U71^1(mark(X)) -> U71^1(X) U71^1(active(X)) -> U71^1(X) U81^1(mark(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, mark(X2), X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, mark(X3)) -> U81^1(X1, X2, X3) U81^1(active(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, active(X2), X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, active(X3)) -> U81^1(X1, X2, X3) U82^1(mark(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, mark(X2), X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, mark(X3)) -> U82^1(X1, X2, X3) U82^1(active(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, active(X2), X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, active(X3)) -> U82^1(X1, X2, X3) U83^1(mark(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, mark(X2), X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, mark(X3)) -> U83^1(X1, X2, X3) U83^1(active(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, active(X2), X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, active(X3)) -> U83^1(X1, X2, X3) U84^1(mark(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, mark(X2), X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, mark(X3)) -> U84^1(X1, X2, X3) U84^1(active(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, active(X2), X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, active(X3)) -> U84^1(X1, X2, X3) U85^1(mark(X1), X2) -> U85^1(X1, X2) U85^1(X1, mark(X2)) -> U85^1(X1, X2) U85^1(active(X1), X2) -> U85^1(X1, X2) U85^1(X1, active(X2)) -> U85^1(X1, X2) U86^1(mark(X)) -> U86^1(X) U86^1(active(X)) -> U86^1(X) U91^1(mark(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, mark(X2), X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, mark(X3)) -> U91^1(X1, X2, X3) U91^1(active(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, active(X2), X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, active(X3)) -> U91^1(X1, X2, X3) U92^1(mark(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, mark(X2), X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, mark(X3)) -> U92^1(X1, X2, X3) U92^1(active(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, active(X2), X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, active(X3)) -> U92^1(X1, X2, X3) U93^1(mark(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, mark(X2), X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, mark(X3)) -> U93^1(X1, X2, X3) U93^1(active(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, active(X2), X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, active(X3)) -> U93^1(X1, X2, X3) U94^1(mark(X1), X2) -> U94^1(X1, X2) U94^1(X1, mark(X2)) -> U94^1(X1, X2) U94^1(active(X1), X2) -> U94^1(X1, X2) U94^1(X1, active(X2)) -> U94^1(X1, X2) S(mark(X)) -> S(X) S(active(X)) -> S(X) LENGTH(mark(X)) -> LENGTH(X) LENGTH(active(X)) -> LENGTH(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 38 SCCs with 111 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(active(X)) -> LENGTH(X) LENGTH(mark(X)) -> LENGTH(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(active(X)) -> LENGTH(X) LENGTH(mark(X)) -> LENGTH(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *LENGTH(active(X)) -> LENGTH(X) The graph contains the following edges 1 > 1 *LENGTH(mark(X)) -> LENGTH(X) The graph contains the following edges 1 > 1 ---------------------------------------- (9) YES ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: S(active(X)) -> S(X) S(mark(X)) -> S(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: S(active(X)) -> S(X) S(mark(X)) -> S(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *S(active(X)) -> S(X) The graph contains the following edges 1 > 1 *S(mark(X)) -> S(X) The graph contains the following edges 1 > 1 ---------------------------------------- (14) YES ---------------------------------------- (15) Obligation: Q DP problem: The TRS P consists of the following rules: U94^1(X1, mark(X2)) -> U94^1(X1, X2) U94^1(mark(X1), X2) -> U94^1(X1, X2) U94^1(active(X1), X2) -> U94^1(X1, X2) U94^1(X1, active(X2)) -> U94^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (16) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (17) Obligation: Q DP problem: The TRS P consists of the following rules: U94^1(X1, mark(X2)) -> U94^1(X1, X2) U94^1(mark(X1), X2) -> U94^1(X1, X2) U94^1(active(X1), X2) -> U94^1(X1, X2) U94^1(X1, active(X2)) -> U94^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (18) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U94^1(X1, mark(X2)) -> U94^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U94^1(mark(X1), X2) -> U94^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U94^1(active(X1), X2) -> U94^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U94^1(X1, active(X2)) -> U94^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: U93^1(X1, mark(X2), X3) -> U93^1(X1, X2, X3) U93^1(mark(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, mark(X3)) -> U93^1(X1, X2, X3) U93^1(active(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, active(X2), X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, active(X3)) -> U93^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: U93^1(X1, mark(X2), X3) -> U93^1(X1, X2, X3) U93^1(mark(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, mark(X3)) -> U93^1(X1, X2, X3) U93^1(active(X1), X2, X3) -> U93^1(X1, X2, X3) U93^1(X1, active(X2), X3) -> U93^1(X1, X2, X3) U93^1(X1, X2, active(X3)) -> U93^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U93^1(X1, mark(X2), X3) -> U93^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U93^1(mark(X1), X2, X3) -> U93^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U93^1(X1, X2, mark(X3)) -> U93^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U93^1(active(X1), X2, X3) -> U93^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U93^1(X1, active(X2), X3) -> U93^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U93^1(X1, X2, active(X3)) -> U93^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: U92^1(X1, mark(X2), X3) -> U92^1(X1, X2, X3) U92^1(mark(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, mark(X3)) -> U92^1(X1, X2, X3) U92^1(active(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, active(X2), X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, active(X3)) -> U92^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: U92^1(X1, mark(X2), X3) -> U92^1(X1, X2, X3) U92^1(mark(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, mark(X3)) -> U92^1(X1, X2, X3) U92^1(active(X1), X2, X3) -> U92^1(X1, X2, X3) U92^1(X1, active(X2), X3) -> U92^1(X1, X2, X3) U92^1(X1, X2, active(X3)) -> U92^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U92^1(X1, mark(X2), X3) -> U92^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U92^1(mark(X1), X2, X3) -> U92^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U92^1(X1, X2, mark(X3)) -> U92^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U92^1(active(X1), X2, X3) -> U92^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U92^1(X1, active(X2), X3) -> U92^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U92^1(X1, X2, active(X3)) -> U92^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: Q DP problem: The TRS P consists of the following rules: U91^1(X1, mark(X2), X3) -> U91^1(X1, X2, X3) U91^1(mark(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, mark(X3)) -> U91^1(X1, X2, X3) U91^1(active(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, active(X2), X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, active(X3)) -> U91^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (31) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: U91^1(X1, mark(X2), X3) -> U91^1(X1, X2, X3) U91^1(mark(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, mark(X3)) -> U91^1(X1, X2, X3) U91^1(active(X1), X2, X3) -> U91^1(X1, X2, X3) U91^1(X1, active(X2), X3) -> U91^1(X1, X2, X3) U91^1(X1, X2, active(X3)) -> U91^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (33) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U91^1(X1, mark(X2), X3) -> U91^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U91^1(mark(X1), X2, X3) -> U91^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U91^1(X1, X2, mark(X3)) -> U91^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U91^1(active(X1), X2, X3) -> U91^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U91^1(X1, active(X2), X3) -> U91^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U91^1(X1, X2, active(X3)) -> U91^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: U86^1(active(X)) -> U86^1(X) U86^1(mark(X)) -> U86^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (36) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: U86^1(active(X)) -> U86^1(X) U86^1(mark(X)) -> U86^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (38) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U86^1(active(X)) -> U86^1(X) The graph contains the following edges 1 > 1 *U86^1(mark(X)) -> U86^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (39) YES ---------------------------------------- (40) Obligation: Q DP problem: The TRS P consists of the following rules: U85^1(X1, mark(X2)) -> U85^1(X1, X2) U85^1(mark(X1), X2) -> U85^1(X1, X2) U85^1(active(X1), X2) -> U85^1(X1, X2) U85^1(X1, active(X2)) -> U85^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (41) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: U85^1(X1, mark(X2)) -> U85^1(X1, X2) U85^1(mark(X1), X2) -> U85^1(X1, X2) U85^1(active(X1), X2) -> U85^1(X1, X2) U85^1(X1, active(X2)) -> U85^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (43) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U85^1(X1, mark(X2)) -> U85^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U85^1(mark(X1), X2) -> U85^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U85^1(active(X1), X2) -> U85^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U85^1(X1, active(X2)) -> U85^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (44) YES ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: U84^1(X1, mark(X2), X3) -> U84^1(X1, X2, X3) U84^1(mark(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, mark(X3)) -> U84^1(X1, X2, X3) U84^1(active(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, active(X2), X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, active(X3)) -> U84^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (46) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (47) Obligation: Q DP problem: The TRS P consists of the following rules: U84^1(X1, mark(X2), X3) -> U84^1(X1, X2, X3) U84^1(mark(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, mark(X3)) -> U84^1(X1, X2, X3) U84^1(active(X1), X2, X3) -> U84^1(X1, X2, X3) U84^1(X1, active(X2), X3) -> U84^1(X1, X2, X3) U84^1(X1, X2, active(X3)) -> U84^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (48) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U84^1(X1, mark(X2), X3) -> U84^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U84^1(mark(X1), X2, X3) -> U84^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U84^1(X1, X2, mark(X3)) -> U84^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U84^1(active(X1), X2, X3) -> U84^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U84^1(X1, active(X2), X3) -> U84^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U84^1(X1, X2, active(X3)) -> U84^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (49) YES ---------------------------------------- (50) Obligation: Q DP problem: The TRS P consists of the following rules: U83^1(X1, mark(X2), X3) -> U83^1(X1, X2, X3) U83^1(mark(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, mark(X3)) -> U83^1(X1, X2, X3) U83^1(active(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, active(X2), X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, active(X3)) -> U83^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (51) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (52) Obligation: Q DP problem: The TRS P consists of the following rules: U83^1(X1, mark(X2), X3) -> U83^1(X1, X2, X3) U83^1(mark(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, mark(X3)) -> U83^1(X1, X2, X3) U83^1(active(X1), X2, X3) -> U83^1(X1, X2, X3) U83^1(X1, active(X2), X3) -> U83^1(X1, X2, X3) U83^1(X1, X2, active(X3)) -> U83^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (53) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U83^1(X1, mark(X2), X3) -> U83^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U83^1(mark(X1), X2, X3) -> U83^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U83^1(X1, X2, mark(X3)) -> U83^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U83^1(active(X1), X2, X3) -> U83^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U83^1(X1, active(X2), X3) -> U83^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U83^1(X1, X2, active(X3)) -> U83^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (54) YES ---------------------------------------- (55) Obligation: Q DP problem: The TRS P consists of the following rules: U82^1(X1, mark(X2), X3) -> U82^1(X1, X2, X3) U82^1(mark(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, mark(X3)) -> U82^1(X1, X2, X3) U82^1(active(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, active(X2), X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, active(X3)) -> U82^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (56) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (57) Obligation: Q DP problem: The TRS P consists of the following rules: U82^1(X1, mark(X2), X3) -> U82^1(X1, X2, X3) U82^1(mark(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, mark(X3)) -> U82^1(X1, X2, X3) U82^1(active(X1), X2, X3) -> U82^1(X1, X2, X3) U82^1(X1, active(X2), X3) -> U82^1(X1, X2, X3) U82^1(X1, X2, active(X3)) -> U82^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (58) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U82^1(X1, mark(X2), X3) -> U82^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U82^1(mark(X1), X2, X3) -> U82^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U82^1(X1, X2, mark(X3)) -> U82^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U82^1(active(X1), X2, X3) -> U82^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U82^1(X1, active(X2), X3) -> U82^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U82^1(X1, X2, active(X3)) -> U82^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (59) YES ---------------------------------------- (60) Obligation: Q DP problem: The TRS P consists of the following rules: U81^1(X1, mark(X2), X3) -> U81^1(X1, X2, X3) U81^1(mark(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, mark(X3)) -> U81^1(X1, X2, X3) U81^1(active(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, active(X2), X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, active(X3)) -> U81^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (61) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (62) Obligation: Q DP problem: The TRS P consists of the following rules: U81^1(X1, mark(X2), X3) -> U81^1(X1, X2, X3) U81^1(mark(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, mark(X3)) -> U81^1(X1, X2, X3) U81^1(active(X1), X2, X3) -> U81^1(X1, X2, X3) U81^1(X1, active(X2), X3) -> U81^1(X1, X2, X3) U81^1(X1, X2, active(X3)) -> U81^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (63) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U81^1(X1, mark(X2), X3) -> U81^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U81^1(mark(X1), X2, X3) -> U81^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U81^1(X1, X2, mark(X3)) -> U81^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U81^1(active(X1), X2, X3) -> U81^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U81^1(X1, active(X2), X3) -> U81^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U81^1(X1, X2, active(X3)) -> U81^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (64) YES ---------------------------------------- (65) Obligation: Q DP problem: The TRS P consists of the following rules: U71^1(active(X)) -> U71^1(X) U71^1(mark(X)) -> U71^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (66) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (67) Obligation: Q DP problem: The TRS P consists of the following rules: U71^1(active(X)) -> U71^1(X) U71^1(mark(X)) -> U71^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (68) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U71^1(active(X)) -> U71^1(X) The graph contains the following edges 1 > 1 *U71^1(mark(X)) -> U71^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (69) YES ---------------------------------------- (70) Obligation: Q DP problem: The TRS P consists of the following rules: U61^1(active(X)) -> U61^1(X) U61^1(mark(X)) -> U61^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (71) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (72) Obligation: Q DP problem: The TRS P consists of the following rules: U61^1(active(X)) -> U61^1(X) U61^1(mark(X)) -> U61^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (73) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U61^1(active(X)) -> U61^1(X) The graph contains the following edges 1 > 1 *U61^1(mark(X)) -> U61^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (74) YES ---------------------------------------- (75) Obligation: Q DP problem: The TRS P consists of the following rules: U52^1(active(X)) -> U52^1(X) U52^1(mark(X)) -> U52^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (76) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (77) Obligation: Q DP problem: The TRS P consists of the following rules: U52^1(active(X)) -> U52^1(X) U52^1(mark(X)) -> U52^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (78) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U52^1(active(X)) -> U52^1(X) The graph contains the following edges 1 > 1 *U52^1(mark(X)) -> U52^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (79) YES ---------------------------------------- (80) Obligation: Q DP problem: The TRS P consists of the following rules: U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (81) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (82) Obligation: Q DP problem: The TRS P consists of the following rules: U51^1(X1, mark(X2)) -> U51^1(X1, X2) U51^1(mark(X1), X2) -> U51^1(X1, X2) U51^1(active(X1), X2) -> U51^1(X1, X2) U51^1(X1, active(X2)) -> U51^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (83) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U51^1(X1, mark(X2)) -> U51^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U51^1(mark(X1), X2) -> U51^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U51^1(active(X1), X2) -> U51^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U51^1(X1, active(X2)) -> U51^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (84) YES ---------------------------------------- (85) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATILIST(active(X)) -> ISNATILIST(X) ISNATILIST(mark(X)) -> ISNATILIST(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (86) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (87) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATILIST(active(X)) -> ISNATILIST(X) ISNATILIST(mark(X)) -> ISNATILIST(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (88) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *ISNATILIST(active(X)) -> ISNATILIST(X) The graph contains the following edges 1 > 1 *ISNATILIST(mark(X)) -> ISNATILIST(X) The graph contains the following edges 1 > 1 ---------------------------------------- (89) YES ---------------------------------------- (90) Obligation: Q DP problem: The TRS P consists of the following rules: U46^1(active(X)) -> U46^1(X) U46^1(mark(X)) -> U46^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (91) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (92) Obligation: Q DP problem: The TRS P consists of the following rules: U46^1(active(X)) -> U46^1(X) U46^1(mark(X)) -> U46^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (93) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U46^1(active(X)) -> U46^1(X) The graph contains the following edges 1 > 1 *U46^1(mark(X)) -> U46^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (94) YES ---------------------------------------- (95) Obligation: Q DP problem: The TRS P consists of the following rules: U45^1(X1, mark(X2)) -> U45^1(X1, X2) U45^1(mark(X1), X2) -> U45^1(X1, X2) U45^1(active(X1), X2) -> U45^1(X1, X2) U45^1(X1, active(X2)) -> U45^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (96) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (97) Obligation: Q DP problem: The TRS P consists of the following rules: U45^1(X1, mark(X2)) -> U45^1(X1, X2) U45^1(mark(X1), X2) -> U45^1(X1, X2) U45^1(active(X1), X2) -> U45^1(X1, X2) U45^1(X1, active(X2)) -> U45^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (98) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U45^1(X1, mark(X2)) -> U45^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U45^1(mark(X1), X2) -> U45^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U45^1(active(X1), X2) -> U45^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U45^1(X1, active(X2)) -> U45^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (99) YES ---------------------------------------- (100) Obligation: Q DP problem: The TRS P consists of the following rules: U44^1(X1, mark(X2), X3) -> U44^1(X1, X2, X3) U44^1(mark(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, mark(X3)) -> U44^1(X1, X2, X3) U44^1(active(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, active(X2), X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, active(X3)) -> U44^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (101) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (102) Obligation: Q DP problem: The TRS P consists of the following rules: U44^1(X1, mark(X2), X3) -> U44^1(X1, X2, X3) U44^1(mark(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, mark(X3)) -> U44^1(X1, X2, X3) U44^1(active(X1), X2, X3) -> U44^1(X1, X2, X3) U44^1(X1, active(X2), X3) -> U44^1(X1, X2, X3) U44^1(X1, X2, active(X3)) -> U44^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (103) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U44^1(X1, mark(X2), X3) -> U44^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U44^1(mark(X1), X2, X3) -> U44^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U44^1(X1, X2, mark(X3)) -> U44^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U44^1(active(X1), X2, X3) -> U44^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U44^1(X1, active(X2), X3) -> U44^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U44^1(X1, X2, active(X3)) -> U44^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (104) YES ---------------------------------------- (105) Obligation: Q DP problem: The TRS P consists of the following rules: U43^1(X1, mark(X2), X3) -> U43^1(X1, X2, X3) U43^1(mark(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, mark(X3)) -> U43^1(X1, X2, X3) U43^1(active(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, active(X2), X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, active(X3)) -> U43^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (106) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (107) Obligation: Q DP problem: The TRS P consists of the following rules: U43^1(X1, mark(X2), X3) -> U43^1(X1, X2, X3) U43^1(mark(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, mark(X3)) -> U43^1(X1, X2, X3) U43^1(active(X1), X2, X3) -> U43^1(X1, X2, X3) U43^1(X1, active(X2), X3) -> U43^1(X1, X2, X3) U43^1(X1, X2, active(X3)) -> U43^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (108) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U43^1(X1, mark(X2), X3) -> U43^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U43^1(mark(X1), X2, X3) -> U43^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U43^1(X1, X2, mark(X3)) -> U43^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U43^1(active(X1), X2, X3) -> U43^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U43^1(X1, active(X2), X3) -> U43^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U43^1(X1, X2, active(X3)) -> U43^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (109) YES ---------------------------------------- (110) Obligation: Q DP problem: The TRS P consists of the following rules: U42^1(X1, mark(X2), X3) -> U42^1(X1, X2, X3) U42^1(mark(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, mark(X3)) -> U42^1(X1, X2, X3) U42^1(active(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, active(X2), X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, active(X3)) -> U42^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (111) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (112) Obligation: Q DP problem: The TRS P consists of the following rules: U42^1(X1, mark(X2), X3) -> U42^1(X1, X2, X3) U42^1(mark(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, mark(X3)) -> U42^1(X1, X2, X3) U42^1(active(X1), X2, X3) -> U42^1(X1, X2, X3) U42^1(X1, active(X2), X3) -> U42^1(X1, X2, X3) U42^1(X1, X2, active(X3)) -> U42^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (113) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U42^1(X1, mark(X2), X3) -> U42^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U42^1(mark(X1), X2, X3) -> U42^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U42^1(X1, X2, mark(X3)) -> U42^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U42^1(active(X1), X2, X3) -> U42^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U42^1(X1, active(X2), X3) -> U42^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U42^1(X1, X2, active(X3)) -> U42^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (114) YES ---------------------------------------- (115) Obligation: Q DP problem: The TRS P consists of the following rules: U41^1(X1, mark(X2), X3) -> U41^1(X1, X2, X3) U41^1(mark(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, mark(X3)) -> U41^1(X1, X2, X3) U41^1(active(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, active(X2), X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, active(X3)) -> U41^1(X1, X2, X3) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (116) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (117) Obligation: Q DP problem: The TRS P consists of the following rules: U41^1(X1, mark(X2), X3) -> U41^1(X1, X2, X3) U41^1(mark(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, mark(X3)) -> U41^1(X1, X2, X3) U41^1(active(X1), X2, X3) -> U41^1(X1, X2, X3) U41^1(X1, active(X2), X3) -> U41^1(X1, X2, X3) U41^1(X1, X2, active(X3)) -> U41^1(X1, X2, X3) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (118) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U41^1(X1, mark(X2), X3) -> U41^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U41^1(mark(X1), X2, X3) -> U41^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U41^1(X1, X2, mark(X3)) -> U41^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 *U41^1(active(X1), X2, X3) -> U41^1(X1, X2, X3) The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 *U41^1(X1, active(X2), X3) -> U41^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 *U41^1(X1, X2, active(X3)) -> U41^1(X1, X2, X3) The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 ---------------------------------------- (119) YES ---------------------------------------- (120) Obligation: Q DP problem: The TRS P consists of the following rules: U33^1(active(X)) -> U33^1(X) U33^1(mark(X)) -> U33^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (121) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (122) Obligation: Q DP problem: The TRS P consists of the following rules: U33^1(active(X)) -> U33^1(X) U33^1(mark(X)) -> U33^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (123) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U33^1(active(X)) -> U33^1(X) The graph contains the following edges 1 > 1 *U33^1(mark(X)) -> U33^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (124) YES ---------------------------------------- (125) Obligation: Q DP problem: The TRS P consists of the following rules: U32^1(X1, mark(X2)) -> U32^1(X1, X2) U32^1(mark(X1), X2) -> U32^1(X1, X2) U32^1(active(X1), X2) -> U32^1(X1, X2) U32^1(X1, active(X2)) -> U32^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (126) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (127) Obligation: Q DP problem: The TRS P consists of the following rules: U32^1(X1, mark(X2)) -> U32^1(X1, X2) U32^1(mark(X1), X2) -> U32^1(X1, X2) U32^1(active(X1), X2) -> U32^1(X1, X2) U32^1(X1, active(X2)) -> U32^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (128) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U32^1(X1, mark(X2)) -> U32^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U32^1(mark(X1), X2) -> U32^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U32^1(active(X1), X2) -> U32^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U32^1(X1, active(X2)) -> U32^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (129) YES ---------------------------------------- (130) Obligation: Q DP problem: The TRS P consists of the following rules: U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (131) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (132) Obligation: Q DP problem: The TRS P consists of the following rules: U31^1(X1, mark(X2)) -> U31^1(X1, X2) U31^1(mark(X1), X2) -> U31^1(X1, X2) U31^1(active(X1), X2) -> U31^1(X1, X2) U31^1(X1, active(X2)) -> U31^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (133) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U31^1(X1, mark(X2)) -> U31^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U31^1(mark(X1), X2) -> U31^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U31^1(active(X1), X2) -> U31^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U31^1(X1, active(X2)) -> U31^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (134) YES ---------------------------------------- (135) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT(active(X)) -> ISNAT(X) ISNAT(mark(X)) -> ISNAT(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (136) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (137) Obligation: Q DP problem: The TRS P consists of the following rules: ISNAT(active(X)) -> ISNAT(X) ISNAT(mark(X)) -> ISNAT(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (138) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *ISNAT(active(X)) -> ISNAT(X) The graph contains the following edges 1 > 1 *ISNAT(mark(X)) -> ISNAT(X) The graph contains the following edges 1 > 1 ---------------------------------------- (139) YES ---------------------------------------- (140) Obligation: Q DP problem: The TRS P consists of the following rules: U23^1(active(X)) -> U23^1(X) U23^1(mark(X)) -> U23^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (141) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (142) Obligation: Q DP problem: The TRS P consists of the following rules: U23^1(active(X)) -> U23^1(X) U23^1(mark(X)) -> U23^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (143) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U23^1(active(X)) -> U23^1(X) The graph contains the following edges 1 > 1 *U23^1(mark(X)) -> U23^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (144) YES ---------------------------------------- (145) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATKIND(active(X)) -> ISNATKIND(X) ISNATKIND(mark(X)) -> ISNATKIND(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (146) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (147) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATKIND(active(X)) -> ISNATKIND(X) ISNATKIND(mark(X)) -> ISNATKIND(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (148) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *ISNATKIND(active(X)) -> ISNATKIND(X) The graph contains the following edges 1 > 1 *ISNATKIND(mark(X)) -> ISNATKIND(X) The graph contains the following edges 1 > 1 ---------------------------------------- (149) YES ---------------------------------------- (150) Obligation: Q DP problem: The TRS P consists of the following rules: U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (151) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (152) Obligation: Q DP problem: The TRS P consists of the following rules: U22^1(X1, mark(X2)) -> U22^1(X1, X2) U22^1(mark(X1), X2) -> U22^1(X1, X2) U22^1(active(X1), X2) -> U22^1(X1, X2) U22^1(X1, active(X2)) -> U22^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (153) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U22^1(X1, mark(X2)) -> U22^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U22^1(mark(X1), X2) -> U22^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U22^1(active(X1), X2) -> U22^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U22^1(X1, active(X2)) -> U22^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (154) YES ---------------------------------------- (155) Obligation: Q DP problem: The TRS P consists of the following rules: U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (156) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (157) Obligation: Q DP problem: The TRS P consists of the following rules: U21^1(X1, mark(X2)) -> U21^1(X1, X2) U21^1(mark(X1), X2) -> U21^1(X1, X2) U21^1(active(X1), X2) -> U21^1(X1, X2) U21^1(X1, active(X2)) -> U21^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (158) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U21^1(X1, mark(X2)) -> U21^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U21^1(mark(X1), X2) -> U21^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U21^1(active(X1), X2) -> U21^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U21^1(X1, active(X2)) -> U21^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (159) YES ---------------------------------------- (160) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATLIST(active(X)) -> ISNATLIST(X) ISNATLIST(mark(X)) -> ISNATLIST(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (161) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (162) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATLIST(active(X)) -> ISNATLIST(X) ISNATLIST(mark(X)) -> ISNATLIST(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (163) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *ISNATLIST(active(X)) -> ISNATLIST(X) The graph contains the following edges 1 > 1 *ISNATLIST(mark(X)) -> ISNATLIST(X) The graph contains the following edges 1 > 1 ---------------------------------------- (164) YES ---------------------------------------- (165) Obligation: Q DP problem: The TRS P consists of the following rules: U13^1(active(X)) -> U13^1(X) U13^1(mark(X)) -> U13^1(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (166) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (167) Obligation: Q DP problem: The TRS P consists of the following rules: U13^1(active(X)) -> U13^1(X) U13^1(mark(X)) -> U13^1(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (168) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U13^1(active(X)) -> U13^1(X) The graph contains the following edges 1 > 1 *U13^1(mark(X)) -> U13^1(X) The graph contains the following edges 1 > 1 ---------------------------------------- (169) YES ---------------------------------------- (170) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATILISTKIND(active(X)) -> ISNATILISTKIND(X) ISNATILISTKIND(mark(X)) -> ISNATILISTKIND(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (171) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (172) Obligation: Q DP problem: The TRS P consists of the following rules: ISNATILISTKIND(active(X)) -> ISNATILISTKIND(X) ISNATILISTKIND(mark(X)) -> ISNATILISTKIND(X) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (173) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *ISNATILISTKIND(active(X)) -> ISNATILISTKIND(X) The graph contains the following edges 1 > 1 *ISNATILISTKIND(mark(X)) -> ISNATILISTKIND(X) The graph contains the following edges 1 > 1 ---------------------------------------- (174) YES ---------------------------------------- (175) Obligation: Q DP problem: The TRS P consists of the following rules: U12^1(X1, mark(X2)) -> U12^1(X1, X2) U12^1(mark(X1), X2) -> U12^1(X1, X2) U12^1(active(X1), X2) -> U12^1(X1, X2) U12^1(X1, active(X2)) -> U12^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (176) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (177) Obligation: Q DP problem: The TRS P consists of the following rules: U12^1(X1, mark(X2)) -> U12^1(X1, X2) U12^1(mark(X1), X2) -> U12^1(X1, X2) U12^1(active(X1), X2) -> U12^1(X1, X2) U12^1(X1, active(X2)) -> U12^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (178) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U12^1(X1, mark(X2)) -> U12^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U12^1(mark(X1), X2) -> U12^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U12^1(active(X1), X2) -> U12^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U12^1(X1, active(X2)) -> U12^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (179) YES ---------------------------------------- (180) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(X1, mark(X2)) -> U11^1(X1, X2) U11^1(mark(X1), X2) -> U11^1(X1, X2) U11^1(active(X1), X2) -> U11^1(X1, X2) U11^1(X1, active(X2)) -> U11^1(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (181) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (182) Obligation: Q DP problem: The TRS P consists of the following rules: U11^1(X1, mark(X2)) -> U11^1(X1, X2) U11^1(mark(X1), X2) -> U11^1(X1, X2) U11^1(active(X1), X2) -> U11^1(X1, X2) U11^1(X1, active(X2)) -> U11^1(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (183) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *U11^1(X1, mark(X2)) -> U11^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *U11^1(mark(X1), X2) -> U11^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U11^1(active(X1), X2) -> U11^1(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *U11^1(X1, active(X2)) -> U11^1(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (184) YES ---------------------------------------- (185) Obligation: Q DP problem: The TRS P consists of the following rules: CONS(X1, mark(X2)) -> CONS(X1, X2) CONS(mark(X1), X2) -> CONS(X1, X2) CONS(active(X1), X2) -> CONS(X1, X2) CONS(X1, active(X2)) -> CONS(X1, X2) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (186) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (187) Obligation: Q DP problem: The TRS P consists of the following rules: CONS(X1, mark(X2)) -> CONS(X1, X2) CONS(mark(X1), X2) -> CONS(X1, X2) CONS(active(X1), X2) -> CONS(X1, X2) CONS(X1, active(X2)) -> CONS(X1, X2) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (188) QDPSizeChangeProof (EQUIVALENT) 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. From the DPs we obtained the following set of size-change graphs: *CONS(X1, mark(X2)) -> CONS(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 *CONS(mark(X1), X2) -> CONS(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *CONS(active(X1), X2) -> CONS(X1, X2) The graph contains the following edges 1 > 1, 2 >= 2 *CONS(X1, active(X2)) -> CONS(X1, X2) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (189) YES ---------------------------------------- (190) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) ACTIVE(U11(tt, V1)) -> MARK(U12(isNatIListKind(V1), V1)) MARK(cons(X1, X2)) -> MARK(X1) MARK(zeros) -> ACTIVE(zeros) ACTIVE(zeros) -> MARK(cons(0, zeros)) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) MARK(U11(X1, X2)) -> MARK(X1) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U12(X1, X2)) -> MARK(X1) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U13(X)) -> ACTIVE(U13(mark(X))) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U23(X)) -> ACTIVE(U23(mark(X))) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> ACTIVE(U33(mark(X))) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> ACTIVE(U46(mark(X))) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(length(V1))) -> MARK(U11(isNatIListKind(V1), V1)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> ACTIVE(U52(mark(X))) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> ACTIVE(U61(mark(X))) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> ACTIVE(U71(mark(X))) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> ACTIVE(U86(mark(X))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U91(X1, X2, X3)) -> MARK(X1) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> MARK(X1) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> MARK(X1) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(U94(X1, X2)) -> MARK(X1) MARK(s(X)) -> ACTIVE(s(mark(X))) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) MARK(length(X)) -> MARK(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (191) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U13(X)) -> ACTIVE(U13(mark(X))) MARK(U23(X)) -> ACTIVE(U23(mark(X))) MARK(U33(X)) -> ACTIVE(U33(mark(X))) MARK(U46(X)) -> ACTIVE(U46(mark(X))) MARK(U52(X)) -> ACTIVE(U52(mark(X))) MARK(U61(X)) -> ACTIVE(U61(mark(X))) MARK(U71(X)) -> ACTIVE(U71(mark(X))) MARK(U86(X)) -> ACTIVE(U86(mark(X))) MARK(s(X)) -> ACTIVE(s(mark(X))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( U11_2(x_1, x_2) ) = 2 POL( U12_2(x_1, x_2) ) = 2 POL( U13_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U23_1(x_1) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2 POL( U52_1(x_1) ) = 0 POL( U61_1(x_1) ) = max{0, -2} POL( U71_1(x_1) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U86_1(x_1) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( cons_2(x_1, x_2) ) = 2 POL( length_1(x_1) ) = 2 POL( s_1(x_1) ) = 1 POL( mark_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, -2} POL( zeros ) = 2 POL( 0 ) = 0 POL( tt ) = 0 POL( isNatIListKind_1(x_1) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 2 POL( nil ) = 0 POL( MARK_1(x_1) ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (192) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) ACTIVE(U11(tt, V1)) -> MARK(U12(isNatIListKind(V1), V1)) MARK(cons(X1, X2)) -> MARK(X1) MARK(zeros) -> ACTIVE(zeros) ACTIVE(zeros) -> MARK(cons(0, zeros)) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) MARK(U11(X1, X2)) -> MARK(X1) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U12(X1, X2)) -> MARK(X1) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U45(X1, X2)) -> MARK(X1) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(length(V1))) -> MARK(U11(isNatIListKind(V1), V1)) MARK(U51(X1, X2)) -> MARK(X1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X)) -> MARK(X) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U61(X)) -> MARK(X) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U91(X1, X2, X3)) -> MARK(X1) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> MARK(X1) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> MARK(X1) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(U94(X1, X2)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) MARK(length(X)) -> MARK(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (193) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( U11_2(x_1, x_2) ) = 2 POL( U12_2(x_1, x_2) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U91_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, -2} POL( length_1(x_1) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = max{0, -2} POL( zeros ) = 2 POL( 0 ) = 0 POL( tt ) = 0 POL( isNatIListKind_1(x_1) ) = 2 POL( U13_1(x_1) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 2 POL( U23_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 0 POL( isNatIList_1(x_1) ) = 2 POL( U52_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = 0 POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( U61_1(x_1) ) = 2x_1 + 2 POL( U71_1(x_1) ) = max{0, -2} POL( nil ) = 0 POL( MARK_1(x_1) ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (194) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U11(tt, V1)) -> MARK(U12(isNatIListKind(V1), V1)) MARK(cons(X1, X2)) -> MARK(X1) MARK(zeros) -> ACTIVE(zeros) ACTIVE(zeros) -> MARK(cons(0, zeros)) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) MARK(U11(X1, X2)) -> MARK(X1) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U12(X1, X2)) -> MARK(X1) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U45(X1, X2)) -> MARK(X1) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(isNat(length(V1))) -> MARK(U11(isNatIListKind(V1), V1)) MARK(U51(X1, X2)) -> MARK(X1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X)) -> MARK(X) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U61(X)) -> MARK(X) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U91(X1, X2, X3)) -> MARK(X1) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> MARK(X1) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> MARK(X1) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(U94(X1, X2)) -> MARK(X1) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) MARK(length(X)) -> MARK(X) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (195) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U11(tt, V1)) -> MARK(U12(isNatIListKind(V1), V1)) MARK(U11(X1, X2)) -> MARK(X1) ACTIVE(isNat(length(V1))) -> MARK(U11(isNatIListKind(V1), V1)) MARK(U91(X1, X2, X3)) -> MARK(X1) MARK(U92(X1, X2, X3)) -> MARK(X1) MARK(U93(X1, X2, X3)) -> MARK(X1) MARK(U94(X1, X2)) -> MARK(X1) MARK(length(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2x_1 POL( MARK_1(x_1) ) = 2x_1 POL( U11_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( U12_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U31_2(x_1, x_2) ) = x_1 + 2x_2 POL( U32_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U52_1(x_1) ) = x_1 POL( U61_1(x_1) ) = 2x_1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U84_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U92_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 + 1 POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U21_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U22_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U45_2(x_1, x_2) ) = x_1 + 2x_2 POL( U51_2(x_1, x_2) ) = 2x_1 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 POL( U82_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 POL( U85_2(x_1, x_2) ) = x_1 + 2x_2 POL( U91_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2x_3 + 1 POL( U93_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 1 POL( U94_2(x_1, x_2) ) = 2x_1 + 2x_2 + 1 POL( length_1(x_1) ) = 2x_1 + 1 POL( cons_2(x_1, x_2) ) = 2x_1 + 2x_2 POL( zeros ) = 0 POL( 0 ) = 0 POL( tt ) = 0 POL( U13_1(x_1) ) = x_1 POL( isNatList_1(x_1) ) = 2x_1 POL( isNatKind_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 2x_1 POL( U33_1(x_1) ) = x_1 POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 2x_1 POL( U86_1(x_1) ) = x_1 POL( s_1(x_1) ) = x_1 POL( U71_1(x_1) ) = 2x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) ---------------------------------------- (196) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(cons(X1, X2)) -> MARK(X1) MARK(zeros) -> ACTIVE(zeros) ACTIVE(zeros) -> MARK(cons(0, zeros)) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U12(X1, X2)) -> MARK(X1) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U45(X1, X2)) -> MARK(X1) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) MARK(U51(X1, X2)) -> MARK(X1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X)) -> MARK(X) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U61(X)) -> MARK(X) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (197) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(zeros) -> ACTIVE(zeros) MARK(U11(X1, X2)) -> ACTIVE(U11(mark(X1), X2)) MARK(U12(X1, X2)) -> ACTIVE(U12(mark(X1), X2)) MARK(U12(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( U11_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U12_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U32_2(x_1, x_2) ) = 2x_1 + 1 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U45_2(x_1, x_2) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = 2x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = x_1 + 1 POL( U85_2(x_1, x_2) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = x_1 POL( cons_2(x_1, x_2) ) = x_1 + 1 POL( active_1(x_1) ) = 2x_1 + 2 POL( zeros ) = 2 POL( 0 ) = 0 POL( tt ) = 0 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = x_1 + 1 POL( isNatList_1(x_1) ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U33_1(x_1) ) = x_1 + 1 POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = x_1 + 1 POL( U86_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2x_1 + 1 POL( U71_1(x_1) ) = x_1 + 1 POL( nil ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (198) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(cons(X1, X2)) -> MARK(X1) ACTIVE(zeros) -> MARK(cons(0, zeros)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U45(X1, X2)) -> MARK(X1) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) MARK(U51(X1, X2)) -> MARK(X1) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U52(X)) -> MARK(X) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U61(X)) -> MARK(X) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (199) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (200) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) MARK(cons(X1, X2)) -> MARK(X1) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (201) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U12(tt, V1)) -> MARK(U13(isNatList(V1))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U31_2(x_1, x_2) ) = 1 POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 1 POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = 2x_1 + 2 POL( U61_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( U13_1(x_1) ) = 2x_1 + 2 POL( U33_1(x_1) ) = 2x_1 + 2 POL( U86_1(x_1) ) = 2x_1 + 2 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 1 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = 1 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 0 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 1 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_2 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U23_1(x_1) ) = 2x_1 + 2 POL( isNat_1(x_1) ) = 1 POL( U46_1(x_1) ) = 2x_1 + 2 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 0 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (202) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(U13(X)) -> MARK(X) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (203) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U13(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U32_2(x_1, x_2) ) = x_1 + 1 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U52_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 1 POL( mark_1(x_1) ) = x_1 POL( U33_1(x_1) ) = 2x_1 + 1 POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = x_1 + 1 POL( U22_2(x_1, x_2) ) = x_1 + 1 POL( U41_3(x_1, ..., x_3) ) = x_1 + 1 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = 2x_1 + 1 POL( U71_1(x_1) ) = 2x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = x_1 + 1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U94_2(x_1, x_2) ) = 1 POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = 2x_1 + 1 POL( U85_2(x_1, x_2) ) = 2x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( cons_2(x_1, x_2) ) = 2x_1 + 1 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = 2x_1 + 2 POL( U13_1(x_1) ) = 2x_1 + 2 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (204) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(cons(X1, X2)) -> MARK(X1) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (205) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(cons(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U31_2(x_1, x_2) ) = 2x_1 + 1 POL( U32_2(x_1, x_2) ) = 2x_1 + 1 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U52_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = 2x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U33_1(x_1) ) = x_1 + 1 POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = x_1 + 1 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = 2x_1 + 1 POL( U71_1(x_1) ) = 2x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = 2x_1 + 1 POL( U85_2(x_1, x_2) ) = 2x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( zeros ) = 1 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (206) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U32(X1, X2)) -> MARK(X1) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U45(X1, X2)) -> MARK(X1) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (207) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U32(tt, V)) -> MARK(U33(isNatList(V))) MARK(U31(X1, X2)) -> MARK(X1) MARK(U32(X1, X2)) -> MARK(X1) MARK(U41(X1, X2, X3)) -> MARK(X1) MARK(U42(X1, X2, X3)) -> MARK(X1) MARK(U43(X1, X2, X3)) -> MARK(X1) MARK(U44(X1, X2, X3)) -> MARK(X1) MARK(U45(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2x_1 POL( MARK_1(x_1) ) = 2x_1 POL( U31_2(x_1, x_2) ) = x_1 + 2 POL( U32_2(x_1, x_2) ) = x_1 + 2 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U44_3(x_1, ..., x_3) ) = x_1 + 2 POL( U52_1(x_1) ) = 2x_1 POL( U61_1(x_1) ) = 2x_1 POL( U83_3(x_1, ..., x_3) ) = x_1 POL( U84_3(x_1, ..., x_3) ) = 2x_1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U33_1(x_1) ) = 2x_1 POL( U86_1(x_1) ) = 2x_1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = x_1 POL( U22_2(x_1, x_2) ) = 2x_1 POL( U41_3(x_1, ..., x_3) ) = x_1 + 2 POL( U42_3(x_1, ..., x_3) ) = x_1 + 2 POL( U51_2(x_1, x_2) ) = 2x_1 POL( U71_1(x_1) ) = 2x_1 POL( U81_3(x_1, ..., x_3) ) = 2x_1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = 2x_1 + 2 POL( U85_2(x_1, x_2) ) = 2x_1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 0 POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 2 POL( s_1(x_1) ) = 2x_1 POL( nil ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) ---------------------------------------- (208) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (209) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U32(X1, X2)) -> ACTIVE(U32(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( MARK_1(x_1) ) = 1 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U52_1(x_1) ) = 2 POL( U61_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( isNatIListKind_1(x_1) ) = 2 POL( active_1(x_1) ) = 1 POL( mark_1(x_1) ) = 0 POL( U86_1(x_1) ) = 2 POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( isNatKind_1(x_1) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_1 + 1 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U13_1(x_1) ) = x_1 + 1 POL( U23_1(x_1) ) = max{0, x_1 - 2} POL( isNat_1(x_1) ) = 2 POL( U33_1(x_1) ) = max{0, x_1 - 2} POL( U46_1(x_1) ) = 0 POL( isNatIList_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (210) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U33(X)) -> MARK(X) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (211) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U33(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U32_2(x_1, x_2) ) = x_1 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 0 POL( U52_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = 2x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 1 POL( mark_1(x_1) ) = x_1 + 2 POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2x_1 + 1 POL( U71_1(x_1) ) = x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 2x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2x_2 + 2 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U33_1(x_1) ) = x_1 + 2 POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (212) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U85(X1, X2)) -> MARK(X1) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (213) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U81(X1, X2, X3)) -> MARK(X1) MARK(U82(X1, X2, X3)) -> MARK(X1) MARK(U83(X1, X2, X3)) -> MARK(X1) MARK(U84(X1, X2, X3)) -> MARK(X1) MARK(U85(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 POL( MARK_1(x_1) ) = x_1 POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U32_2(x_1, x_2) ) = 0 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = x_1 POL( U61_1(x_1) ) = x_1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U86_1(x_1) ) = x_1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 1 POL( U21_2(x_1, x_2) ) = 2x_1 POL( U22_2(x_1, x_2) ) = x_1 POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = 0 POL( U51_2(x_1, x_2) ) = 2x_1 POL( U71_1(x_1) ) = 2x_1 POL( U81_3(x_1, ..., x_3) ) = x_1 + 1 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 2x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = 2x_1 POL( length_1(x_1) ) = max{0, -2} POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = 2x_1 POL( isNat_1(x_1) ) = 0 POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) ---------------------------------------- (214) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(U22(X1, X2)) -> MARK(X1) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (215) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U21(X1, X2)) -> MARK(X1) MARK(U22(X1, X2)) -> MARK(X1) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = x_1 POL( MARK_1(x_1) ) = x_1 POL( U31_2(x_1, x_2) ) = max{0, -2} POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = x_1 POL( U52_1(x_1) ) = 2x_1 POL( U61_1(x_1) ) = x_1 POL( U83_3(x_1, ..., x_3) ) = 2x_1 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 2 POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U86_1(x_1) ) = 2x_1 POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 2x_1 + 2 POL( U22_2(x_1, x_2) ) = 2x_1 + 2 POL( U41_3(x_1, ..., x_3) ) = 0 POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2x_1 POL( U71_1(x_1) ) = x_1 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = x_1 POL( U94_2(x_1, x_2) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 0 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 2x_1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) ---------------------------------------- (216) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (217) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U31(tt, V)) -> MARK(U32(isNatIListKind(V), V)) ACTIVE(isNatIList(V)) -> MARK(U31(isNatIListKind(V), V)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2x_1 + 2 POL( MARK_1(x_1) ) = 2x_1 + 2 POL( U31_2(x_1, x_2) ) = 1 POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U52_1(x_1) ) = 2x_1 POL( U61_1(x_1) ) = x_1 POL( U83_3(x_1, ..., x_3) ) = 0 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U86_1(x_1) ) = x_1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = 2x_1 POL( U71_1(x_1) ) = x_1 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = 2 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2 POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = 2x_1 POL( isNat_1(x_1) ) = 0 POL( U33_1(x_1) ) = 0 POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 2 POL( s_1(x_1) ) = x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) ---------------------------------------- (218) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (219) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U31(X1, X2)) -> ACTIVE(U31(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 1 POL( U52_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = 0 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 1 POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = x_1 + 2 POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 1 POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = x_1 + 1 POL( U71_1(x_1) ) = x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = x_2 POL( zeros ) = 2 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = x_2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = 1 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U32_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = x_1 + 1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (220) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U51(X1, X2)) -> MARK(X1) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (221) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U51(X1, X2)) -> MARK(X1) ACTIVE(isNatKind(length(V1))) -> MARK(U61(isNatIListKind(V1))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2x_1 POL( MARK_1(x_1) ) = 2x_1 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = x_1 POL( U61_1(x_1) ) = x_1 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( isNatIListKind_1(x_1) ) = 2x_1 + 2 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U86_1(x_1) ) = 2x_1 POL( U91_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = 0 POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U71_1(x_1) ) = x_1 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = x_2 + 2 POL( isNatKind_1(x_1) ) = 2x_1 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( length_1(x_1) ) = x_1 + 2 POL( cons_2(x_1, x_2) ) = x_1 + 2x_2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 0 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, -2} POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 0 POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) ---------------------------------------- (222) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U61(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (223) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U61(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U44_3(x_1, ..., x_3) ) = 1 POL( U52_1(x_1) ) = x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = x_1 + 1 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = 2x_1 + 1 POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 1 POL( U71_1(x_1) ) = x_1 + 1 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = 2x_2 + 2 POL( U13_1(x_1) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U33_1(x_1) ) = x_1 + 1 POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = x_1 + 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (224) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (225) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNatKind(s(V1))) -> MARK(U71(isNatKind(V1))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, x_1 - 2} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = 2x_1 + 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 2 POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = x_1 POL( U86_1(x_1) ) = 2x_1 + 2 POL( U91_3(x_1, ..., x_3) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = x_1 + 2 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 2x_1 + 2 POL( U45_2(x_1, x_2) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = max{0, -2} POL( cons_2(x_1, x_2) ) = max{0, x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_2 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = 2 POL( U13_1(x_1) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = 2x_1 + 2 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( U32_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 2x_1 + 2 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 2 POL( U61_1(x_1) ) = max{0, x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) ---------------------------------------- (226) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (227) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNatKind(X)) -> ACTIVE(isNatKind(X)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( MARK_1(x_1) ) = 1 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U52_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( isNatIListKind_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( isNatKind_1(x_1) ) = 1 POL( U45_2(x_1, x_2) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_2 + 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2 POL( U13_1(x_1) ) = 0 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U32_2(x_1, x_2) ) = 2x_1 + 2 POL( U33_1(x_1) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 2 POL( s_1(x_1) ) = 2 POL( U61_1(x_1) ) = 2 POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (228) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U71(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (229) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U71(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2 POL( MARK_1(x_1) ) = x_1 + 2 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = 2x_1 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U86_1(x_1) ) = 2x_1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = x_1 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U71_1(x_1) ) = x_1 + 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U13_1(x_1) ) = x_1 + 2 POL( U23_1(x_1) ) = 2x_1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 2x_1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (230) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (231) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNatIListKind(cons(V1, V2))) -> MARK(U51(isNatKind(V1), V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U52_1(x_1) ) = x_1 + 1 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 0 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatIListKind_1(x_1) ) = x_1 + 1 POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = 2x_1 POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = x_2 + 2 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = max{0, -2} POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_2 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_1 + x_2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = x_1 + 1 POL( U33_1(x_1) ) = x_1 + 2 POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (232) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (233) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNatIListKind(X)) -> ACTIVE(isNatIListKind(X)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U52_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( isNatIListKind_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = 0 POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U51_2(x_1, x_2) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U71_1(x_1) ) = 1 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = x_2 + 1 POL( U13_1(x_1) ) = x_1 POL( U23_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U33_1(x_1) ) = 2x_1 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, x_1 - 2} POL( U61_1(x_1) ) = 2x_1 + 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (234) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (235) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 1 POL( mark_1(x_1) ) = 2x_1 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = 1 POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 1 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U45_2(x_1, x_2) ) = 1 POL( U51_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 1 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U71_1(x_1) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2 POL( zeros ) = 0 POL( 0 ) = 1 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 2x_2 + 2 POL( U33_1(x_1) ) = max{0, x_1 - 2} POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (236) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (237) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U51(tt, V2)) -> MARK(U52(isNatIListKind(V2))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = 1 POL( U22_2(x_1, x_2) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 1 POL( U42_3(x_1, ..., x_3) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 1 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 1 POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = max{0, x_1 - 2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = 2 POL( U46_1(x_1) ) = max{0, x_1 - 2} POL( isNatIList_1(x_1) ) = 1 POL( U52_1(x_1) ) = max{0, 2x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( U61_1(x_1) ) = x_1 + 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (238) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U52(X)) -> MARK(X) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (239) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U52(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = 1 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = 2x_1 + 1 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = 0 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 0 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U51_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_1 + 2 POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 1} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = x_1 + 2 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (240) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (241) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = 1 POL( U41_3(x_1, ..., x_3) ) = 2x_2 + x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U81_3(x_1, ..., x_3) ) = 0 POL( U82_3(x_1, ..., x_3) ) = 0 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U44_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U45_2(x_1, x_2) ) = x_2 + 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 1 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = 0 POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_1 + x_2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2x_2 + 1 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = x_1 + 2 POL( U33_1(x_1) ) = 2 POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = x_1 + 1 POL( U52_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = max{0, 2x_1 - 2} POL( nil ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (242) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (243) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( MARK_1(x_1) ) = 1 POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, x_1 - 2} POL( mark_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U51_2(x_1, x_2) ) = 2x_2 + 2 POL( U71_1(x_1) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2x_2 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U33_1(x_1) ) = max{0, 2x_1 - 2} POL( U46_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (244) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (245) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U41(X1, X2, X3)) -> ACTIVE(U41(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = 0 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 0 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = 0 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = max{0, -2} POL( U51_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( U71_1(x_1) ) = max{0, -2} POL( isNatKind_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U32_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U33_1(x_1) ) = 2 POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (246) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (247) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U41(tt, V1, V2)) -> MARK(U42(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, x_1 - 2} POL( mark_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = 0 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 0 POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 0 POL( U85_2(x_1, x_2) ) = 0 POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = x_1 + x_2 + 2 POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 + x_2 + 2 POL( zeros ) = 2 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = max{0, x_2 - 2} POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( U33_1(x_1) ) = 0 POL( U46_1(x_1) ) = max{0, x_1 - 2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = 0 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (248) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (249) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U42(X1, X2, X3)) -> ACTIVE(U42(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 0 POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + x_3 + 2 POL( U43_3(x_1, ..., x_3) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = 0 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = 2x_1 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( U32_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U46_1(x_1) ) = 2x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = x_1 + 2 POL( nil ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (250) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (251) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U42(tt, V1, V2)) -> MARK(U43(isNatIListKind(V2), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 0 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 0 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_1 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = 2 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 2x_1 POL( U52_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (252) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (253) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U43(X1, X2, X3)) -> ACTIVE(U43(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 0 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = 2x_1 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = 0 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U44_3(x_1, ..., x_3) ) = 1 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = 1 POL( U84_3(x_1, ..., x_3) ) = 1 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 1} POL( U71_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_2 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U33_1(x_1) ) = max{0, 2x_1 - 2} POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (254) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (255) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U43(tt, V1, V2)) -> MARK(U44(isNatIListKind(V2), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = 0 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = 2x_1 + x_2 POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = x_1 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( U23_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = x_1 + 2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 2x_1 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = x_1 POL( U52_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = max{0, x_1 - 2} POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (256) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (257) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U44(X1, X2, X3)) -> ACTIVE(U44(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = 1 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 POL( mark_1(x_1) ) = x_1 POL( U21_2(x_1, x_2) ) = 1 POL( U22_2(x_1, x_2) ) = 1 POL( U81_3(x_1, ..., x_3) ) = 1 POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U44_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 0 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2 POL( U42_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U71_1(x_1) ) = 1 POL( isNatKind_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 1 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U32_2(x_1, x_2) ) = 1 POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 + 2x_3 - 2} POL( U46_1(x_1) ) = x_1 + 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, x_1 - 2} POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (258) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (259) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U44(tt, V1, V2)) -> MARK(U45(isNat(V1), V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = 2 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 1} POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = x_1 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U33_1(x_1) ) = max{0, 2x_1 - 2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U46_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, 2x_1 - 2} POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( U61_1(x_1) ) = max{0, 2x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (260) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (261) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U45(X1, X2)) -> ACTIVE(U45(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = 2 POL( MARK_1(x_1) ) = x_1 + 2 POL( U86_1(x_1) ) = x_1 POL( U91_3(x_1, ..., x_3) ) = 2x_1 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = x_1 + 2 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U45_2(x_1, x_2) ) = x_2 + 1 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = x_1 + 2 POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 + x_3 - 2} POL( U51_2(x_1, x_2) ) = 2x_2 + 2 POL( U71_1(x_1) ) = 0 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 2 POL( U13_1(x_1) ) = x_1 + 2 POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, -2} POL( U46_1(x_1) ) = x_1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2x_1 + 2 POL( s_1(x_1) ) = 2x_1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (262) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (263) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U45(tt, V2)) -> MARK(U46(isNatIList(V2))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( MARK_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = 2x_1 + 2 POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 2 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = x_1 + 2 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = 0 POL( U85_2(x_1, x_2) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 1} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 POL( zeros ) = 0 POL( 0 ) = 1 POL( U11_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = 2x_2 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 0 POL( U32_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U45_2(x_1, x_2) ) = 2x_1 + 2 POL( U46_1(x_1) ) = max{0, x_1 - 2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 0 POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (264) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) MARK(U46(X)) -> MARK(X) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (265) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U46(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, -2} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = 2x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = 2x_1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U21_2(x_1, x_2) ) = 2x_1 + 1 POL( U22_2(x_1, x_2) ) = 0 POL( U81_3(x_1, ..., x_3) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 0 POL( U94_2(x_1, x_2) ) = 0 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 1 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U71_1(x_1) ) = x_1 + 1 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, 2x_1 - 2} POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U45_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} POL( U46_1(x_1) ) = x_1 + 2 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (266) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (267) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNatList(cons(V1, V2))) -> MARK(U81(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, x_1 - 1} POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U86_1(x_1) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( isNatList_1(x_1) ) = x_1 + 1 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U21_2(x_1, x_2) ) = 0 POL( U22_2(x_1, x_2) ) = 1 POL( U81_3(x_1, ..., x_3) ) = x_3 + 2 POL( U82_3(x_1, ..., x_3) ) = x_3 + 2 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = x_3 + 2 POL( U84_3(x_1, ..., x_3) ) = x_3 + 2 POL( U85_2(x_1, x_2) ) = x_2 + 2 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = x_1 + x_2 POL( U51_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = x_2 + 2 POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2x_1 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, x_1 - 1} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, x_1 - 2} POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, -2} POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U45_2(x_1, x_2) ) = max{0, -2} POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, 2x_1 - 2} POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (268) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(isNatList(X)) -> ACTIVE(isNatList(X)) ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (269) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNatList(X)) -> ACTIVE(isNatList(X)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( MARK_1(x_1) ) = 2 POL( U86_1(x_1) ) = 2 POL( U91_3(x_1, ..., x_3) ) = 2 POL( isNatList_1(x_1) ) = 0 POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + x_3 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 + x_2 + 1 POL( zeros ) = 1 POL( 0 ) = 1 POL( U11_2(x_1, x_2) ) = 2x_1 + 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2x_2 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = x_1 + x_2 POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = x_1 + x_3 + 2 POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = max{0, x_1 - 2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 2 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (270) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (271) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U81(X1, X2, X3)) -> ACTIVE(U81(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 1 POL( U82_3(x_1, ..., x_3) ) = 0 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2x_1 POL( mark_1(x_1) ) = x_1 POL( U81_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U83_3(x_1, ..., x_3) ) = 1 POL( U84_3(x_1, ..., x_3) ) = 0 POL( U85_2(x_1, x_2) ) = 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 1 POL( U93_3(x_1, ..., x_3) ) = 1 POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = 2x_2 + x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 - 1} POL( U51_2(x_1, x_2) ) = x_2 + 2 POL( U71_1(x_1) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 0 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = x_2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2x_1 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, 2x_2 + x_3 - 2} POL( U45_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( U86_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = max{0, x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (272) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (273) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U81(tt, V1, V2)) -> MARK(U82(isNatKind(V1), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U82_3(x_1, ..., x_3) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = max{0, x_1 - 2} POL( mark_1(x_1) ) = 0 POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U91_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + 2x_3 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + x_3 + 1 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( isNatList_1(x_1) ) = x_1 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U45_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U46_1(x_1) ) = x_1 + 2 POL( isNatIList_1(x_1) ) = 2 POL( U52_1(x_1) ) = 2 POL( U86_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = max{0, 2x_1 - 1} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (274) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (275) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U82(X1, X2, X3)) -> ACTIVE(U82(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2x_1 POL( mark_1(x_1) ) = x_1 + 2 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + x_2 + 2x_3 + 2 POL( U83_3(x_1, ..., x_3) ) = max{0, -2} POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2 POL( U42_3(x_1, ..., x_3) ) = x_2 + 2 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U71_1(x_1) ) = max{0, 2x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = max{0, 2x_2 + x_3 - 1} POL( isNatKind_1(x_1) ) = x_1 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_3 - 1} POL( U44_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 1 POL( U52_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (276) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (277) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U82(tt, V1, V2)) -> MARK(U83(isNatIListKind(V2), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = 1 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = 1 POL( U92_3(x_1, ..., x_3) ) = 1 POL( U93_3(x_1, ..., x_3) ) = 1 POL( length_1(x_1) ) = 1 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U82_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2x_3 + 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, -2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2x_2 + 2 POL( U32_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U33_1(x_1) ) = 0 POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U45_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 0 POL( U86_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 2 POL( U61_1(x_1) ) = max{0, x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (278) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (279) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U83(X1, X2, X3)) -> ACTIVE(U83(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 0 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = x_1 + 2 POL( mark_1(x_1) ) = 2x_1 POL( U83_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U84_3(x_1, ..., x_3) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = x_1 + 1 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = 0 POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 + 2x_3 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2x_1 + 2x_2 + 2 POL( zeros ) = 1 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = x_1 + 2 POL( U33_1(x_1) ) = 0 POL( U43_3(x_1, ..., x_3) ) = x_3 + 2 POL( U44_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 + x_3 - 2} POL( U45_2(x_1, x_2) ) = x_2 + 2 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = x_1 POL( U52_1(x_1) ) = max{0, -2} POL( U86_1(x_1) ) = x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (280) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (281) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U83(tt, V1, V2)) -> MARK(U84(isNatIListKind(V2), V1, V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = 2 POL( U94_2(x_1, x_2) ) = 2 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = max{0, x_1 - 2} POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 0 POL( U91_3(x_1, ..., x_3) ) = 2 POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U71_1(x_1) ) = max{0, 2x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_3 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = x_1 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 2x_1 POL( U13_1(x_1) ) = max{0, x_1 - 2} POL( isNatList_1(x_1) ) = 2x_1 POL( U23_1(x_1) ) = 0 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = max{0, 2x_1 - 2} POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_1 + 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 2x_1 POL( U52_1(x_1) ) = max{0, x_1 - 2} POL( U83_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U86_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, 2x_1 - 2} POL( U61_1(x_1) ) = max{0, 2x_1 - 2} POL( nil ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (282) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (283) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U84(X1, X2, X3)) -> ACTIVE(U84(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = 2x_1 POL( U84_3(x_1, ..., x_3) ) = 2x_1 + x_2 + x_3 + 2 POL( U85_2(x_1, x_2) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = x_1 + x_2 + 1 POL( U71_1(x_1) ) = max{0, x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = x_1 + 2x_2 + 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = x_1 + 2x_2 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 1 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U33_1(x_1) ) = 1 POL( U43_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 - 2} POL( U45_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 2 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 + 2x_3 - 2} POL( U86_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = 2x_1 + 1 POL( U61_1(x_1) ) = 2x_1 + 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (284) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U86(X)) -> MARK(X) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (285) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U86(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = x_1 POL( U21_2(x_1, x_2) ) = x_1 + 1 POL( U22_2(x_1, x_2) ) = 2x_1 + 1 POL( U94_2(x_1, x_2) ) = 2x_1 + 1 POL( ACTIVE_1(x_1) ) = 1 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = x_1 POL( U85_2(x_1, x_2) ) = 1 POL( U91_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = 1 POL( length_1(x_1) ) = 1 POL( U41_3(x_1, ..., x_3) ) = max{0, x_3 - 1} POL( U42_3(x_1, ..., x_3) ) = x_1 + 2x_3 + 2 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U71_1(x_1) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, x_3 - 1} POL( U82_3(x_1, ..., x_3) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = x_1 POL( isNat_1(x_1) ) = 1 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = x_2 + 2 POL( U33_1(x_1) ) = x_1 + 2 POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U44_3(x_1, ..., x_3) ) = x_1 + 2x_3 + 2 POL( U45_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = x_1 + 1 POL( U52_1(x_1) ) = max{0, 2x_1 - 2} POL( U83_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U84_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U86_1(x_1) ) = 2x_1 + 1 POL( s_1(x_1) ) = x_1 POL( U61_1(x_1) ) = 0 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (286) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (287) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U84(tt, V1, V2)) -> MARK(U85(isNat(V1), V2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = 2 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( U85_2(x_1, x_2) ) = 2 POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U51_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U82_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + x_3 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 2 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = max{0, 2x_1 - 2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = 0 POL( U43_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U84_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U86_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = x_1 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (288) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (289) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U85(X1, X2)) -> ACTIVE(U85(mark(X1), X2)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, x_1 - 1} POL( U21_2(x_1, x_2) ) = 1 POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = x_1 POL( U85_2(x_1, x_2) ) = x_2 + 2 POL( U91_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U92_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = max{0, -2} POL( U41_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = x_1 + 2 POL( U51_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U71_1(x_1) ) = max{0, 2x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U82_3(x_1, ..., x_3) ) = x_2 + x_3 + 1 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = 2 POL( zeros ) = 1 POL( 0 ) = 2 POL( U11_2(x_1, x_2) ) = 2x_1 + 2 POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = x_2 + 2 POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2x_1 + 1 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 + x_2 - 2} POL( U32_2(x_1, x_2) ) = 2x_1 + 1 POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, 2x_2 + 2x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 2x_1 POL( U52_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, 2x_2 + x_3 - 2} POL( U84_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U86_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = x_1 + 1 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (290) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (291) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U85(tt, V2)) -> MARK(U86(isNatList(V2))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = 2 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 2 POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = x_1 + x_2 + 2 POL( U42_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2 POL( U82_3(x_1, ..., x_3) ) = max{0, x_1 - 2} POL( isNatKind_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = x_1 + x_2 + 2 POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 2 POL( U13_1(x_1) ) = max{0, 2x_1 - 2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = max{0, x_1 - 2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2x_1 + x_2 + 1 POL( U32_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U33_1(x_1) ) = max{0, x_1 - 2} POL( U43_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = 2x_1 POL( U52_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = max{0, 2x_1 - 2} POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = x_1 + 2 POL( U86_1(x_1) ) = max{0, 2x_1 - 2} POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = max{0, 2x_1 - 2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (292) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U23(X)) -> MARK(X) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(s(X)) -> MARK(X) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (293) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U23(X)) -> MARK(X) MARK(s(X)) -> MARK(X) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = 2x_1 POL( U21_2(x_1, x_2) ) = 2x_1 + x_2 POL( U22_2(x_1, x_2) ) = x_2 + 2 POL( U94_2(x_1, x_2) ) = x_1 + 2x_2 + 1 POL( ACTIVE_1(x_1) ) = 2x_1 POL( active_1(x_1) ) = x_1 POL( mark_1(x_1) ) = x_1 POL( U91_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 POL( U92_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U93_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( length_1(x_1) ) = 2x_1 POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = 1 POL( U71_1(x_1) ) = 1 POL( U81_3(x_1, ..., x_3) ) = 2x_3 POL( U82_3(x_1, ..., x_3) ) = 2x_3 POL( isNatKind_1(x_1) ) = 1 POL( cons_2(x_1, x_2) ) = 2x_2 POL( zeros ) = 0 POL( 0 ) = 1 POL( U11_2(x_1, x_2) ) = 2x_2 POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = 2x_2 POL( isNatIListKind_1(x_1) ) = 2 POL( U13_1(x_1) ) = x_1 POL( isNatList_1(x_1) ) = x_1 POL( U23_1(x_1) ) = x_1 + 2 POL( isNat_1(x_1) ) = x_1 POL( U31_2(x_1, x_2) ) = 2 POL( U32_2(x_1, x_2) ) = 1 POL( U33_1(x_1) ) = 1 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 2 POL( U52_1(x_1) ) = 1 POL( U83_3(x_1, ..., x_3) ) = 2x_3 POL( U84_3(x_1, ..., x_3) ) = 2x_3 POL( U85_2(x_1, x_2) ) = 2x_2 POL( U86_1(x_1) ) = 2x_1 POL( s_1(x_1) ) = x_1 + 2 POL( U61_1(x_1) ) = 1 POL( nil ) = 1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: isNatKind(active(X)) -> isNatKind(X) isNatKind(mark(X)) -> isNatKind(X) U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) mark(zeros) -> active(zeros) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) mark(U13(X)) -> active(U13(mark(X))) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) mark(isNatList(X)) -> active(isNatList(X)) active(U32(tt, V)) -> mark(U33(isNatList(V))) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) mark(isNatKind(X)) -> active(isNatKind(X)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) mark(U23(X)) -> active(U23(mark(X))) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) mark(isNat(X)) -> active(isNat(X)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) mark(U33(X)) -> active(U33(mark(X))) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) mark(U46(X)) -> active(U46(mark(X))) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) mark(isNatIList(X)) -> active(isNatIList(X)) active(U94(tt, L)) -> mark(s(length(L))) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) mark(U52(X)) -> active(U52(mark(X))) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) mark(U61(X)) -> active(U61(mark(X))) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) mark(U71(X)) -> active(U71(mark(X))) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(0) -> active(0) mark(tt) -> active(tt) mark(nil) -> active(nil) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) isNatIListKind(active(X)) -> isNatIListKind(X) isNatIListKind(mark(X)) -> isNatIListKind(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) length(active(X)) -> length(X) length(mark(X)) -> length(X) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) isNatList(active(X)) -> isNatList(X) isNatList(mark(X)) -> isNatList(X) cons(X1, mark(X2)) -> cons(X1, X2) cons(mark(X1), X2) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) active(U13(tt)) -> mark(tt) active(U23(tt)) -> mark(tt) active(U33(tt)) -> mark(tt) active(U46(tt)) -> mark(tt) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U86(tt)) -> mark(tt) active(isNat(0)) -> mark(tt) active(isNatIList(zeros)) -> mark(tt) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatKind(0)) -> mark(tt) active(isNatList(nil)) -> mark(tt) active(length(nil)) -> mark(0) U12(X1, mark(X2)) -> U12(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U13(active(X)) -> U13(X) U13(mark(X)) -> U13(X) U32(X1, mark(X2)) -> U32(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(active(X)) -> U33(X) U33(mark(X)) -> U33(X) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(X1, mark(X2)) -> U45(X1, X2) U45(mark(X1), X2) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) isNatIList(active(X)) -> isNatIList(X) isNatIList(mark(X)) -> isNatIList(X) U46(active(X)) -> U46(X) U46(mark(X)) -> U46(X) U31(X1, mark(X2)) -> U31(X1, X2) U31(mark(X1), X2) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U52(active(X)) -> U52(X) U52(mark(X)) -> U52(X) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(X1, mark(X2)) -> U85(X1, X2) U85(mark(X1), X2) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(active(X)) -> U86(X) U86(mark(X)) -> U86(X) U51(X1, mark(X2)) -> U51(X1, X2) U51(mark(X1), X2) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U61(active(X)) -> U61(X) U61(mark(X)) -> U61(X) U71(active(X)) -> U71(X) U71(mark(X)) -> U71(X) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) ---------------------------------------- (294) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(isNat(X)) -> ACTIVE(isNat(X)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) MARK(length(X)) -> ACTIVE(length(mark(X))) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (295) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(isNat(X)) -> ACTIVE(isNat(X)) MARK(length(X)) -> ACTIVE(length(mark(X))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = 0 POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, 2x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 0 POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( length_1(x_1) ) = 2 POL( U41_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U42_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U71_1(x_1) ) = 2x_1 POL( U81_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 1 POL( isNat_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U44_3(x_1, ..., x_3) ) = 2 POL( U45_2(x_1, x_2) ) = 2x_1 + 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = x_1 + 2 POL( U52_1(x_1) ) = max{0, -2} POL( U83_3(x_1, ..., x_3) ) = 2 POL( U84_3(x_1, ..., x_3) ) = max{0, x_1 + 2x_2 + x_3 - 2} POL( U85_2(x_1, x_2) ) = 2x_1 + 2 POL( U86_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (296) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (297) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(isNat(s(V1))) -> MARK(U21(isNatKind(V1), V1)) ACTIVE(length(cons(N, L))) -> MARK(U91(isNatList(L), L, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = 1 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = 2 POL( U91_3(x_1, ..., x_3) ) = 0 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 0 POL( U41_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = 2 POL( U51_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U71_1(x_1) ) = max{0, 2x_1 - 2} POL( U81_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U82_3(x_1, ..., x_3) ) = 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = 2 POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = 2 POL( isNatIListKind_1(x_1) ) = 2 POL( U13_1(x_1) ) = 1 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 2x_1 + 2 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = 2x_2 + 2 POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, 2x_2 - 2} POL( U84_3(x_1, ..., x_3) ) = 2x_1 + x_2 + 2 POL( U85_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U86_1(x_1) ) = 2 POL( s_1(x_1) ) = 2 POL( length_1(x_1) ) = 2 POL( U61_1(x_1) ) = 0 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(mark(X1), X2) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) ---------------------------------------- (298) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (299) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U21(X1, X2)) -> ACTIVE(U21(mark(X1), X2)) MARK(U91(X1, X2, X3)) -> ACTIVE(U91(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U22_2(x_1, x_2) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = 0 POL( U21_2(x_1, x_2) ) = 2 POL( active_1(x_1) ) = 2x_1 + 2 POL( mark_1(x_1) ) = 2x_1 + 2 POL( U91_3(x_1, ..., x_3) ) = 2x_2 + 2x_3 + 2 POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = 2x_1 + 1 POL( U41_3(x_1, ..., x_3) ) = x_2 + x_3 + 2 POL( U42_3(x_1, ..., x_3) ) = 2x_2 + 2 POL( U51_2(x_1, x_2) ) = 2 POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, -2} POL( zeros ) = 2 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = x_2 + 2 POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, x_2 - 2} POL( isNatIListKind_1(x_1) ) = 1 POL( U13_1(x_1) ) = 0 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = max{0, -2} POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U32_2(x_1, x_2) ) = 2 POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = max{0, x_1 + x_3 - 2} POL( U44_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U45_2(x_1, x_2) ) = x_2 + 2 POL( U46_1(x_1) ) = max{0, x_1 - 2} POL( isNatIList_1(x_1) ) = 2x_1 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = 2x_1 + x_2 + x_3 + 2 POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U86_1(x_1) ) = 2 POL( s_1(x_1) ) = max{0, -2} POL( length_1(x_1) ) = 0 POL( U61_1(x_1) ) = 2 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNat(active(X)) -> isNat(X) isNat(mark(X)) -> isNat(X) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) ---------------------------------------- (300) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (301) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U22(tt, V1)) -> MARK(U23(isNat(V1))) ACTIVE(U94(tt, L)) -> MARK(s(length(L))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, 2x_1 - 1} POL( U22_2(x_1, x_2) ) = 1 POL( U94_2(x_1, x_2) ) = 1 POL( ACTIVE_1(x_1) ) = 1 POL( active_1(x_1) ) = max{0, 2x_1 - 2} POL( mark_1(x_1) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 1 POL( U93_3(x_1, ..., x_3) ) = 1 POL( U21_2(x_1, x_2) ) = 2x_2 + 2 POL( U41_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, 2x_1 + x_2 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + x_3 + 2 POL( U82_3(x_1, ..., x_3) ) = 2x_1 + x_3 + 2 POL( isNatKind_1(x_1) ) = 0 POL( U23_1(x_1) ) = 0 POL( U45_2(x_1, x_2) ) = 2x_1 + 2 POL( U85_2(x_1, x_2) ) = x_2 + 2 POL( isNat_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( tt ) = 2 POL( U12_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 1 POL( isNatList_1(x_1) ) = 2 POL( U31_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U32_2(x_1, x_2) ) = 2x_2 + 2 POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( U44_3(x_1, ..., x_3) ) = max{0, x_2 - 2} POL( U46_1(x_1) ) = max{0, -2} POL( isNatIList_1(x_1) ) = x_1 POL( U52_1(x_1) ) = 2x_1 + 2 POL( U83_3(x_1, ..., x_3) ) = x_1 + 2x_3 + 2 POL( U84_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U86_1(x_1) ) = 2x_1 + 2 POL( U91_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( s_1(x_1) ) = 0 POL( length_1(x_1) ) = 2 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U23(active(X)) -> U23(X) U23(mark(X)) -> U23(X) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(active(X)) -> s(X) s(mark(X)) -> s(X) ---------------------------------------- (302) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (303) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U91(tt, L, N)) -> MARK(U92(isNatIListKind(L), L, N)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, -2} POL( U22_2(x_1, x_2) ) = max{0, -2} POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} POL( active_1(x_1) ) = 2 POL( mark_1(x_1) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = max{0, -2} POL( U93_3(x_1, ..., x_3) ) = max{0, -2} POL( U21_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U41_3(x_1, ..., x_3) ) = 2 POL( U42_3(x_1, ..., x_3) ) = 2x_1 + x_3 + 2 POL( U51_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U71_1(x_1) ) = max{0, -2} POL( U81_3(x_1, ..., x_3) ) = max{0, x_1 + x_2 + x_3 - 2} POL( U82_3(x_1, ..., x_3) ) = x_2 + x_3 POL( isNatKind_1(x_1) ) = 0 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( tt ) = 1 POL( U12_2(x_1, x_2) ) = max{0, 2x_2 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = max{0, -2} POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U32_2(x_1, x_2) ) = max{0, x_1 - 2} POL( U33_1(x_1) ) = 2 POL( U43_3(x_1, ..., x_3) ) = 2 POL( U44_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U45_2(x_1, x_2) ) = max{0, x_2 - 2} POL( U46_1(x_1) ) = 1 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( U84_3(x_1, ..., x_3) ) = max{0, x_2 + x_3 - 2} POL( U85_2(x_1, x_2) ) = x_1 + x_2 + 1 POL( U86_1(x_1) ) = max{0, -2} POL( U91_3(x_1, ..., x_3) ) = 2x_1 + 2 POL( s_1(x_1) ) = 0 POL( length_1(x_1) ) = max{0, -2} POL( U61_1(x_1) ) = 0 POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) ---------------------------------------- (304) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (305) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. MARK(U92(X1, X2, X3)) -> ACTIVE(U92(mark(X1), X2, X3)) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} POL( U22_2(x_1, x_2) ) = 1 POL( U94_2(x_1, x_2) ) = max{0, -2} POL( ACTIVE_1(x_1) ) = max{0, -2} POL( active_1(x_1) ) = max{0, -2} POL( mark_1(x_1) ) = max{0, -2} POL( U92_3(x_1, ..., x_3) ) = 2 POL( U93_3(x_1, ..., x_3) ) = 1 POL( U21_2(x_1, x_2) ) = 2 POL( U41_3(x_1, ..., x_3) ) = max{0, 2x_1 + x_2 + x_3 - 2} POL( U42_3(x_1, ..., x_3) ) = max{0, 2x_2 + x_3 - 2} POL( U51_2(x_1, x_2) ) = max{0, x_1 + 2x_2 - 2} POL( U71_1(x_1) ) = 2 POL( U81_3(x_1, ..., x_3) ) = 2x_1 + 2x_2 + 2 POL( U82_3(x_1, ..., x_3) ) = x_1 + x_3 + 1 POL( isNatKind_1(x_1) ) = 2 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( zeros ) = 0 POL( 0 ) = 0 POL( U11_2(x_1, x_2) ) = max{0, x_1 - 2} POL( tt ) = 0 POL( U12_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( isNatIListKind_1(x_1) ) = 0 POL( U13_1(x_1) ) = 1 POL( isNatList_1(x_1) ) = 0 POL( U23_1(x_1) ) = 2 POL( isNat_1(x_1) ) = 0 POL( U31_2(x_1, x_2) ) = 2x_2 + 2 POL( U32_2(x_1, x_2) ) = max{0, 2x_1 - 2} POL( U33_1(x_1) ) = max{0, -2} POL( U43_3(x_1, ..., x_3) ) = 2x_3 + 2 POL( U44_3(x_1, ..., x_3) ) = max{0, x_1 + x_3 - 2} POL( U45_2(x_1, x_2) ) = 2 POL( U46_1(x_1) ) = 2 POL( isNatIList_1(x_1) ) = 0 POL( U52_1(x_1) ) = 2 POL( U83_3(x_1, ..., x_3) ) = max{0, x_2 + 2x_3 - 2} POL( U84_3(x_1, ..., x_3) ) = 2 POL( U85_2(x_1, x_2) ) = 2 POL( U86_1(x_1) ) = max{0, x_1 - 2} POL( U91_3(x_1, ..., x_3) ) = max{0, x_3 - 2} POL( s_1(x_1) ) = max{0, -2} POL( length_1(x_1) ) = 2 POL( U61_1(x_1) ) = max{0, -2} POL( nil ) = 0 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) ---------------------------------------- (306) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (307) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVE(U21(tt, V1)) -> MARK(U22(isNatKind(V1), V1)) ACTIVE(U92(tt, L, N)) -> MARK(U93(isNat(N), L, N)) ACTIVE(U93(tt, L, N)) -> MARK(U94(isNatKind(N), L)) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. ACTIVE(x1) = x1 U21(x1, x2) = U21 MARK(x1) = x1 U22(x1, x2) = U22 U92(x1, x2, x3) = U92 U93(x1, x2, x3) = U93 U94(x1, x2) = U94 Knuth-Bendix order [KBO] with precedence:U93 > U94 and weight map: U93=1 U92=2 U21=3 U22=2 U94=1 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: U22(X1, mark(X2)) -> U22(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(X1, mark(X2)) -> U94(X1, X2) U94(mark(X1), X2) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) ---------------------------------------- (308) Obligation: Q DP problem: The TRS P consists of the following rules: MARK(U22(X1, X2)) -> ACTIVE(U22(mark(X1), X2)) MARK(U93(X1, X2, X3)) -> ACTIVE(U93(mark(X1), X2, X3)) MARK(U94(X1, X2)) -> ACTIVE(U94(mark(X1), X2)) The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) mark(zeros) -> active(zeros) mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) mark(0) -> active(0) mark(U11(X1, X2)) -> active(U11(mark(X1), X2)) mark(tt) -> active(tt) mark(U12(X1, X2)) -> active(U12(mark(X1), X2)) mark(isNatIListKind(X)) -> active(isNatIListKind(X)) mark(U13(X)) -> active(U13(mark(X))) mark(isNatList(X)) -> active(isNatList(X)) mark(U21(X1, X2)) -> active(U21(mark(X1), X2)) mark(U22(X1, X2)) -> active(U22(mark(X1), X2)) mark(isNatKind(X)) -> active(isNatKind(X)) mark(U23(X)) -> active(U23(mark(X))) mark(isNat(X)) -> active(isNat(X)) mark(U31(X1, X2)) -> active(U31(mark(X1), X2)) mark(U32(X1, X2)) -> active(U32(mark(X1), X2)) mark(U33(X)) -> active(U33(mark(X))) mark(U41(X1, X2, X3)) -> active(U41(mark(X1), X2, X3)) mark(U42(X1, X2, X3)) -> active(U42(mark(X1), X2, X3)) mark(U43(X1, X2, X3)) -> active(U43(mark(X1), X2, X3)) mark(U44(X1, X2, X3)) -> active(U44(mark(X1), X2, X3)) mark(U45(X1, X2)) -> active(U45(mark(X1), X2)) mark(U46(X)) -> active(U46(mark(X))) mark(isNatIList(X)) -> active(isNatIList(X)) mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) mark(U52(X)) -> active(U52(mark(X))) mark(U61(X)) -> active(U61(mark(X))) mark(U71(X)) -> active(U71(mark(X))) mark(U81(X1, X2, X3)) -> active(U81(mark(X1), X2, X3)) mark(U82(X1, X2, X3)) -> active(U82(mark(X1), X2, X3)) mark(U83(X1, X2, X3)) -> active(U83(mark(X1), X2, X3)) mark(U84(X1, X2, X3)) -> active(U84(mark(X1), X2, X3)) mark(U85(X1, X2)) -> active(U85(mark(X1), X2)) mark(U86(X)) -> active(U86(mark(X))) mark(U91(X1, X2, X3)) -> active(U91(mark(X1), X2, X3)) mark(U92(X1, X2, X3)) -> active(U92(mark(X1), X2, X3)) mark(U93(X1, X2, X3)) -> active(U93(mark(X1), X2, X3)) mark(U94(X1, X2)) -> active(U94(mark(X1), X2)) mark(s(X)) -> active(s(mark(X))) mark(length(X)) -> active(length(mark(X))) mark(nil) -> active(nil) cons(mark(X1), X2) -> cons(X1, X2) cons(X1, mark(X2)) -> cons(X1, X2) cons(active(X1), X2) -> cons(X1, X2) cons(X1, active(X2)) -> cons(X1, X2) U11(mark(X1), X2) -> U11(X1, X2) U11(X1, mark(X2)) -> U11(X1, X2) U11(active(X1), X2) -> U11(X1, X2) U11(X1, active(X2)) -> U11(X1, X2) U12(mark(X1), X2) -> U12(X1, X2) U12(X1, mark(X2)) -> U12(X1, X2) U12(active(X1), X2) -> U12(X1, X2) U12(X1, active(X2)) -> U12(X1, X2) isNatIListKind(mark(X)) -> isNatIListKind(X) isNatIListKind(active(X)) -> isNatIListKind(X) U13(mark(X)) -> U13(X) U13(active(X)) -> U13(X) isNatList(mark(X)) -> isNatList(X) isNatList(active(X)) -> isNatList(X) U21(mark(X1), X2) -> U21(X1, X2) U21(X1, mark(X2)) -> U21(X1, X2) U21(active(X1), X2) -> U21(X1, X2) U21(X1, active(X2)) -> U21(X1, X2) U22(mark(X1), X2) -> U22(X1, X2) U22(X1, mark(X2)) -> U22(X1, X2) U22(active(X1), X2) -> U22(X1, X2) U22(X1, active(X2)) -> U22(X1, X2) isNatKind(mark(X)) -> isNatKind(X) isNatKind(active(X)) -> isNatKind(X) U23(mark(X)) -> U23(X) U23(active(X)) -> U23(X) isNat(mark(X)) -> isNat(X) isNat(active(X)) -> isNat(X) U31(mark(X1), X2) -> U31(X1, X2) U31(X1, mark(X2)) -> U31(X1, X2) U31(active(X1), X2) -> U31(X1, X2) U31(X1, active(X2)) -> U31(X1, X2) U32(mark(X1), X2) -> U32(X1, X2) U32(X1, mark(X2)) -> U32(X1, X2) U32(active(X1), X2) -> U32(X1, X2) U32(X1, active(X2)) -> U32(X1, X2) U33(mark(X)) -> U33(X) U33(active(X)) -> U33(X) U41(mark(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, mark(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, mark(X3)) -> U41(X1, X2, X3) U41(active(X1), X2, X3) -> U41(X1, X2, X3) U41(X1, active(X2), X3) -> U41(X1, X2, X3) U41(X1, X2, active(X3)) -> U41(X1, X2, X3) U42(mark(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, mark(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, mark(X3)) -> U42(X1, X2, X3) U42(active(X1), X2, X3) -> U42(X1, X2, X3) U42(X1, active(X2), X3) -> U42(X1, X2, X3) U42(X1, X2, active(X3)) -> U42(X1, X2, X3) U43(mark(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, mark(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, mark(X3)) -> U43(X1, X2, X3) U43(active(X1), X2, X3) -> U43(X1, X2, X3) U43(X1, active(X2), X3) -> U43(X1, X2, X3) U43(X1, X2, active(X3)) -> U43(X1, X2, X3) U44(mark(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, mark(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, mark(X3)) -> U44(X1, X2, X3) U44(active(X1), X2, X3) -> U44(X1, X2, X3) U44(X1, active(X2), X3) -> U44(X1, X2, X3) U44(X1, X2, active(X3)) -> U44(X1, X2, X3) U45(mark(X1), X2) -> U45(X1, X2) U45(X1, mark(X2)) -> U45(X1, X2) U45(active(X1), X2) -> U45(X1, X2) U45(X1, active(X2)) -> U45(X1, X2) U46(mark(X)) -> U46(X) U46(active(X)) -> U46(X) isNatIList(mark(X)) -> isNatIList(X) isNatIList(active(X)) -> isNatIList(X) U51(mark(X1), X2) -> U51(X1, X2) U51(X1, mark(X2)) -> U51(X1, X2) U51(active(X1), X2) -> U51(X1, X2) U51(X1, active(X2)) -> U51(X1, X2) U52(mark(X)) -> U52(X) U52(active(X)) -> U52(X) U61(mark(X)) -> U61(X) U61(active(X)) -> U61(X) U71(mark(X)) -> U71(X) U71(active(X)) -> U71(X) U81(mark(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, mark(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, mark(X3)) -> U81(X1, X2, X3) U81(active(X1), X2, X3) -> U81(X1, X2, X3) U81(X1, active(X2), X3) -> U81(X1, X2, X3) U81(X1, X2, active(X3)) -> U81(X1, X2, X3) U82(mark(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, mark(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, mark(X3)) -> U82(X1, X2, X3) U82(active(X1), X2, X3) -> U82(X1, X2, X3) U82(X1, active(X2), X3) -> U82(X1, X2, X3) U82(X1, X2, active(X3)) -> U82(X1, X2, X3) U83(mark(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, mark(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, mark(X3)) -> U83(X1, X2, X3) U83(active(X1), X2, X3) -> U83(X1, X2, X3) U83(X1, active(X2), X3) -> U83(X1, X2, X3) U83(X1, X2, active(X3)) -> U83(X1, X2, X3) U84(mark(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, mark(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, mark(X3)) -> U84(X1, X2, X3) U84(active(X1), X2, X3) -> U84(X1, X2, X3) U84(X1, active(X2), X3) -> U84(X1, X2, X3) U84(X1, X2, active(X3)) -> U84(X1, X2, X3) U85(mark(X1), X2) -> U85(X1, X2) U85(X1, mark(X2)) -> U85(X1, X2) U85(active(X1), X2) -> U85(X1, X2) U85(X1, active(X2)) -> U85(X1, X2) U86(mark(X)) -> U86(X) U86(active(X)) -> U86(X) U91(mark(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, mark(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, mark(X3)) -> U91(X1, X2, X3) U91(active(X1), X2, X3) -> U91(X1, X2, X3) U91(X1, active(X2), X3) -> U91(X1, X2, X3) U91(X1, X2, active(X3)) -> U91(X1, X2, X3) U92(mark(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, mark(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, mark(X3)) -> U92(X1, X2, X3) U92(active(X1), X2, X3) -> U92(X1, X2, X3) U92(X1, active(X2), X3) -> U92(X1, X2, X3) U92(X1, X2, active(X3)) -> U92(X1, X2, X3) U93(mark(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, mark(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, mark(X3)) -> U93(X1, X2, X3) U93(active(X1), X2, X3) -> U93(X1, X2, X3) U93(X1, active(X2), X3) -> U93(X1, X2, X3) U93(X1, X2, active(X3)) -> U93(X1, X2, X3) U94(mark(X1), X2) -> U94(X1, X2) U94(X1, mark(X2)) -> U94(X1, X2) U94(active(X1), X2) -> U94(X1, X2) U94(X1, active(X2)) -> U94(X1, X2) s(mark(X)) -> s(X) s(active(X)) -> s(X) length(mark(X)) -> length(X) length(active(X)) -> length(X) Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (309) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes. ---------------------------------------- (310) TRUE