53.31/16.25 YES 53.31/16.27 proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml 53.31/16.27 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 53.31/16.27 53.31/16.27 53.31/16.27 Termination w.r.t. Q of the given QTRS could be proven: 53.31/16.27 53.31/16.27 (0) QTRS 53.31/16.27 (1) QTRSRRRProof [EQUIVALENT, 314 ms] 53.31/16.27 (2) QTRS 53.31/16.27 (3) QTRSRRRProof [EQUIVALENT, 148 ms] 53.31/16.27 (4) QTRS 53.31/16.27 (5) QTRSRRRProof [EQUIVALENT, 109 ms] 53.31/16.27 (6) QTRS 53.31/16.27 (7) QTRSRRRProof [EQUIVALENT, 84 ms] 53.31/16.27 (8) QTRS 53.31/16.27 (9) DependencyPairsProof [EQUIVALENT, 54 ms] 53.31/16.27 (10) QDP 53.31/16.27 (11) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (12) AND 53.31/16.27 (13) QDP 53.31/16.27 (14) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (15) QDP 53.31/16.27 (16) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (17) QDP 53.31/16.27 (18) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (19) YES 53.31/16.27 (20) QDP 53.31/16.27 (21) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (22) QDP 53.31/16.27 (23) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (24) QDP 53.31/16.27 (25) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (26) YES 53.31/16.27 (27) QDP 53.31/16.27 (28) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (29) QDP 53.31/16.27 (30) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (31) QDP 53.31/16.27 (32) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (33) YES 53.31/16.27 (34) QDP 53.31/16.27 (35) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (36) QDP 53.31/16.27 (37) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (38) QDP 53.31/16.27 (39) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (40) YES 53.31/16.27 (41) QDP 53.31/16.27 (42) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (43) QDP 53.31/16.27 (44) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (45) QDP 53.31/16.27 (46) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (47) YES 53.31/16.27 (48) QDP 53.31/16.27 (49) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (50) QDP 53.31/16.27 (51) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (52) QDP 53.31/16.27 (53) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (54) YES 53.31/16.27 (55) QDP 53.31/16.27 (56) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (57) QDP 53.31/16.27 (58) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (59) QDP 53.31/16.27 (60) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (61) YES 53.31/16.27 (62) QDP 53.31/16.27 (63) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (64) QDP 53.31/16.27 (65) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (66) QDP 53.31/16.27 (67) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (68) YES 53.31/16.27 (69) QDP 53.31/16.27 (70) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (71) QDP 53.31/16.27 (72) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (73) QDP 53.31/16.27 (74) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (75) YES 53.31/16.27 (76) QDP 53.31/16.27 (77) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (78) QDP 53.31/16.27 (79) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (80) QDP 53.31/16.27 (81) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (82) YES 53.31/16.27 (83) QDP 53.31/16.27 (84) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (85) QDP 53.31/16.27 (86) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (87) QDP 53.31/16.27 (88) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (89) YES 53.31/16.27 (90) QDP 53.31/16.27 (91) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (92) QDP 53.31/16.27 (93) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (94) QDP 53.31/16.27 (95) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (96) YES 53.31/16.27 (97) QDP 53.31/16.27 (98) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (99) QDP 53.31/16.27 (100) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (101) QDP 53.31/16.27 (102) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (103) YES 53.31/16.27 (104) QDP 53.31/16.27 (105) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (106) QDP 53.31/16.27 (107) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (108) QDP 53.31/16.27 (109) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (110) YES 53.31/16.27 (111) QDP 53.31/16.27 (112) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (113) QDP 53.31/16.27 (114) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (115) QDP 53.31/16.27 (116) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (117) YES 53.31/16.27 (118) QDP 53.31/16.27 (119) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (120) QDP 53.31/16.27 (121) MRRProof [EQUIVALENT, 281 ms] 53.31/16.27 (122) QDP 53.31/16.27 (123) MRRProof [EQUIVALENT, 261 ms] 53.31/16.27 (124) QDP 53.31/16.27 (125) MRRProof [EQUIVALENT, 126 ms] 53.31/16.27 (126) QDP 53.31/16.27 (127) MRRProof [EQUIVALENT, 213 ms] 53.31/16.27 (128) QDP 53.31/16.27 (129) QDPQMonotonicMRRProof [EQUIVALENT, 315 ms] 53.31/16.27 (130) QDP 53.31/16.27 (131) QDPQMonotonicMRRProof [EQUIVALENT, 168 ms] 53.31/16.27 (132) QDP 53.31/16.27 (133) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (134) QDP 53.31/16.27 (135) QDPQMonotonicMRRProof [EQUIVALENT, 132 ms] 53.31/16.27 (136) QDP 53.31/16.27 (137) QDPOrderProof [EQUIVALENT, 393 ms] 53.31/16.27 (138) QDP 53.31/16.27 (139) QDPOrderProof [EQUIVALENT, 363 ms] 53.31/16.27 (140) QDP 53.31/16.27 (141) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (142) QDP 53.31/16.27 (143) QDPOrderProof [EQUIVALENT, 270 ms] 53.31/16.27 (144) QDP 53.31/16.27 (145) QDPQMonotonicMRRProof [EQUIVALENT, 293 ms] 53.31/16.27 (146) QDP 53.31/16.27 (147) QDPQMonotonicMRRProof [EQUIVALENT, 115 ms] 53.31/16.27 (148) QDP 53.31/16.27 (149) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (150) QDP 53.31/16.27 (151) QDPQMonotonicMRRProof [EQUIVALENT, 97 ms] 53.31/16.27 (152) QDP 53.31/16.27 (153) QDPQMonotonicMRRProof [EQUIVALENT, 142 ms] 53.31/16.27 (154) QDP 53.31/16.27 (155) QDPOrderProof [EQUIVALENT, 242 ms] 53.31/16.27 (156) QDP 53.31/16.27 (157) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (158) QDP 53.31/16.27 (159) QDPOrderProof [EQUIVALENT, 122 ms] 53.31/16.27 (160) QDP 53.31/16.27 (161) QDPOrderProof [EQUIVALENT, 0 ms] 53.31/16.27 (162) QDP 53.31/16.27 (163) QDPOrderProof [EQUIVALENT, 0 ms] 53.31/16.27 (164) QDP 53.31/16.27 (165) DependencyGraphProof [EQUIVALENT, 0 ms] 53.31/16.27 (166) QDP 53.31/16.27 (167) QDPOrderProof [EQUIVALENT, 0 ms] 53.31/16.27 (168) QDP 53.31/16.27 (169) UsableRulesProof [EQUIVALENT, 0 ms] 53.31/16.27 (170) QDP 53.31/16.27 (171) QReductionProof [EQUIVALENT, 0 ms] 53.31/16.27 (172) QDP 53.31/16.27 (173) QDPSizeChangeProof [EQUIVALENT, 0 ms] 53.31/16.27 (174) YES 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (0) 53.31/16.27 Obligation: 53.31/16.27 Q restricted rewrite system: 53.31/16.27 The TRS R consists of the following rules: 53.31/16.27 53.31/16.27 active(zeros) -> mark(cons(0, zeros)) 53.31/16.27 active(U11(tt)) -> mark(tt) 53.31/16.27 active(U21(tt)) -> mark(tt) 53.31/16.27 active(U31(tt)) -> mark(tt) 53.31/16.27 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.31/16.27 active(U42(tt)) -> mark(tt) 53.31/16.27 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.31/16.27 active(U52(tt)) -> mark(tt) 53.31/16.27 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.31/16.27 active(U62(tt, L)) -> mark(s(length(L))) 53.31/16.27 active(isNat(0)) -> mark(tt) 53.31/16.27 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 53.31/16.27 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.31/16.27 active(isNatIList(V)) -> mark(U31(isNatList(V))) 53.31/16.27 active(isNatIList(zeros)) -> mark(tt) 53.31/16.27 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.31/16.27 active(isNatList(nil)) -> mark(tt) 53.31/16.27 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.31/16.27 active(length(nil)) -> mark(0) 53.31/16.27 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.31/16.27 mark(zeros) -> active(zeros) 53.31/16.27 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.31/16.27 mark(0) -> active(0) 53.31/16.27 mark(U11(X)) -> active(U11(mark(X))) 53.31/16.27 mark(tt) -> active(tt) 53.31/16.27 mark(U21(X)) -> active(U21(mark(X))) 53.31/16.27 mark(U31(X)) -> active(U31(mark(X))) 53.31/16.27 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.31/16.27 mark(U42(X)) -> active(U42(mark(X))) 53.31/16.27 mark(isNatIList(X)) -> active(isNatIList(X)) 53.31/16.27 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.31/16.27 mark(U52(X)) -> active(U52(mark(X))) 53.31/16.27 mark(isNatList(X)) -> active(isNatList(X)) 53.31/16.27 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.31/16.27 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.31/16.27 mark(isNat(X)) -> active(isNat(X)) 53.31/16.27 mark(s(X)) -> active(s(mark(X))) 53.31/16.27 mark(length(X)) -> active(length(mark(X))) 53.31/16.27 mark(nil) -> active(nil) 53.31/16.27 cons(mark(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, mark(X2)) -> cons(X1, X2) 53.31/16.27 cons(active(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, active(X2)) -> cons(X1, X2) 53.31/16.27 U11(mark(X)) -> U11(X) 53.31/16.27 U11(active(X)) -> U11(X) 53.31/16.27 U21(mark(X)) -> U21(X) 53.31/16.27 U21(active(X)) -> U21(X) 53.31/16.27 U31(mark(X)) -> U31(X) 53.31/16.27 U31(active(X)) -> U31(X) 53.31/16.27 U41(mark(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, mark(X2)) -> U41(X1, X2) 53.31/16.27 U41(active(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, active(X2)) -> U41(X1, X2) 53.31/16.27 U42(mark(X)) -> U42(X) 53.31/16.27 U42(active(X)) -> U42(X) 53.31/16.27 isNatIList(mark(X)) -> isNatIList(X) 53.31/16.27 isNatIList(active(X)) -> isNatIList(X) 53.31/16.27 U51(mark(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, mark(X2)) -> U51(X1, X2) 53.31/16.27 U51(active(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, active(X2)) -> U51(X1, X2) 53.31/16.27 U52(mark(X)) -> U52(X) 53.31/16.27 U52(active(X)) -> U52(X) 53.31/16.27 isNatList(mark(X)) -> isNatList(X) 53.31/16.27 isNatList(active(X)) -> isNatList(X) 53.31/16.27 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.31/16.27 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.31/16.27 U62(mark(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, mark(X2)) -> U62(X1, X2) 53.31/16.27 U62(active(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, active(X2)) -> U62(X1, X2) 53.31/16.27 isNat(mark(X)) -> isNat(X) 53.31/16.27 isNat(active(X)) -> isNat(X) 53.31/16.27 s(mark(X)) -> s(X) 53.31/16.27 s(active(X)) -> s(X) 53.31/16.27 length(mark(X)) -> length(X) 53.31/16.27 length(active(X)) -> length(X) 53.31/16.27 53.31/16.27 The set Q consists of the following terms: 53.31/16.27 53.31/16.27 active(zeros) 53.31/16.27 active(U11(tt)) 53.31/16.27 active(U21(tt)) 53.31/16.27 active(U31(tt)) 53.31/16.27 active(U41(tt, x0)) 53.31/16.27 active(U42(tt)) 53.31/16.27 active(U51(tt, x0)) 53.31/16.27 active(U52(tt)) 53.31/16.27 active(U61(tt, x0, x1)) 53.31/16.27 active(U62(tt, x0)) 53.31/16.27 active(isNat(0)) 53.31/16.27 active(isNat(length(x0))) 53.31/16.27 active(isNat(s(x0))) 53.31/16.27 active(isNatIList(x0)) 53.31/16.27 active(isNatList(nil)) 53.31/16.27 active(isNatList(cons(x0, x1))) 53.31/16.27 active(length(nil)) 53.31/16.27 active(length(cons(x0, x1))) 53.31/16.27 mark(zeros) 53.31/16.27 mark(cons(x0, x1)) 53.31/16.27 mark(0) 53.31/16.27 mark(U11(x0)) 53.31/16.27 mark(tt) 53.31/16.27 mark(U21(x0)) 53.31/16.27 mark(U31(x0)) 53.31/16.27 mark(U41(x0, x1)) 53.31/16.27 mark(U42(x0)) 53.31/16.27 mark(isNatIList(x0)) 53.31/16.27 mark(U51(x0, x1)) 53.31/16.27 mark(U52(x0)) 53.31/16.27 mark(isNatList(x0)) 53.31/16.27 mark(U61(x0, x1, x2)) 53.31/16.27 mark(U62(x0, x1)) 53.31/16.27 mark(isNat(x0)) 53.31/16.27 mark(s(x0)) 53.31/16.27 mark(length(x0)) 53.31/16.27 mark(nil) 53.31/16.27 cons(mark(x0), x1) 53.31/16.27 cons(x0, mark(x1)) 53.31/16.27 cons(active(x0), x1) 53.31/16.27 cons(x0, active(x1)) 53.31/16.27 U11(mark(x0)) 53.31/16.27 U11(active(x0)) 53.31/16.27 U21(mark(x0)) 53.31/16.27 U21(active(x0)) 53.31/16.27 U31(mark(x0)) 53.31/16.27 U31(active(x0)) 53.31/16.27 U41(mark(x0), x1) 53.31/16.27 U41(x0, mark(x1)) 53.31/16.27 U41(active(x0), x1) 53.31/16.27 U41(x0, active(x1)) 53.31/16.27 U42(mark(x0)) 53.31/16.27 U42(active(x0)) 53.31/16.27 isNatIList(mark(x0)) 53.31/16.27 isNatIList(active(x0)) 53.31/16.27 U51(mark(x0), x1) 53.31/16.27 U51(x0, mark(x1)) 53.31/16.27 U51(active(x0), x1) 53.31/16.27 U51(x0, active(x1)) 53.31/16.27 U52(mark(x0)) 53.31/16.27 U52(active(x0)) 53.31/16.27 isNatList(mark(x0)) 53.31/16.27 isNatList(active(x0)) 53.31/16.27 U61(mark(x0), x1, x2) 53.31/16.27 U61(x0, mark(x1), x2) 53.31/16.27 U61(x0, x1, mark(x2)) 53.31/16.27 U61(active(x0), x1, x2) 53.31/16.27 U61(x0, active(x1), x2) 53.31/16.27 U61(x0, x1, active(x2)) 53.31/16.27 U62(mark(x0), x1) 53.31/16.27 U62(x0, mark(x1)) 53.31/16.27 U62(active(x0), x1) 53.31/16.27 U62(x0, active(x1)) 53.31/16.27 isNat(mark(x0)) 53.31/16.27 isNat(active(x0)) 53.31/16.27 s(mark(x0)) 53.31/16.27 s(active(x0)) 53.31/16.27 length(mark(x0)) 53.31/16.27 length(active(x0)) 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (1) QTRSRRRProof (EQUIVALENT) 53.31/16.27 Used ordering: 53.31/16.27 Polynomial interpretation [POLO]: 53.31/16.27 53.31/16.27 POL(0) = 0 53.31/16.27 POL(U11(x_1)) = x_1 53.31/16.27 POL(U21(x_1)) = x_1 53.31/16.27 POL(U31(x_1)) = x_1 53.31/16.27 POL(U41(x_1, x_2)) = 1 + x_1 + 2*x_2 53.31/16.27 POL(U42(x_1)) = x_1 53.31/16.27 POL(U51(x_1, x_2)) = 2*x_1 + 2*x_2 53.31/16.27 POL(U52(x_1)) = x_1 53.31/16.27 POL(U61(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 53.31/16.27 POL(U62(x_1, x_2)) = x_1 + 2*x_2 53.31/16.27 POL(active(x_1)) = x_1 53.31/16.27 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.31/16.27 POL(isNat(x_1)) = x_1 53.31/16.27 POL(isNatIList(x_1)) = 1 + 2*x_1 53.31/16.27 POL(isNatList(x_1)) = 2*x_1 53.31/16.27 POL(length(x_1)) = 2*x_1 53.31/16.27 POL(mark(x_1)) = x_1 53.31/16.27 POL(nil) = 2 53.31/16.27 POL(s(x_1)) = x_1 53.31/16.27 POL(tt) = 0 53.31/16.27 POL(zeros) = 0 53.31/16.27 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 53.31/16.27 53.31/16.27 active(isNatIList(V)) -> mark(U31(isNatList(V))) 53.31/16.27 active(isNatIList(zeros)) -> mark(tt) 53.31/16.27 active(isNatList(nil)) -> mark(tt) 53.31/16.27 active(length(nil)) -> mark(0) 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (2) 53.31/16.27 Obligation: 53.31/16.27 Q restricted rewrite system: 53.31/16.27 The TRS R consists of the following rules: 53.31/16.27 53.31/16.27 active(zeros) -> mark(cons(0, zeros)) 53.31/16.27 active(U11(tt)) -> mark(tt) 53.31/16.27 active(U21(tt)) -> mark(tt) 53.31/16.27 active(U31(tt)) -> mark(tt) 53.31/16.27 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.31/16.27 active(U42(tt)) -> mark(tt) 53.31/16.27 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.31/16.27 active(U52(tt)) -> mark(tt) 53.31/16.27 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.31/16.27 active(U62(tt, L)) -> mark(s(length(L))) 53.31/16.27 active(isNat(0)) -> mark(tt) 53.31/16.27 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 53.31/16.27 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.31/16.27 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.31/16.27 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.31/16.27 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.31/16.27 mark(zeros) -> active(zeros) 53.31/16.27 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.31/16.27 mark(0) -> active(0) 53.31/16.27 mark(U11(X)) -> active(U11(mark(X))) 53.31/16.27 mark(tt) -> active(tt) 53.31/16.27 mark(U21(X)) -> active(U21(mark(X))) 53.31/16.27 mark(U31(X)) -> active(U31(mark(X))) 53.31/16.27 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.31/16.27 mark(U42(X)) -> active(U42(mark(X))) 53.31/16.27 mark(isNatIList(X)) -> active(isNatIList(X)) 53.31/16.27 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.31/16.27 mark(U52(X)) -> active(U52(mark(X))) 53.31/16.27 mark(isNatList(X)) -> active(isNatList(X)) 53.31/16.27 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.31/16.27 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.31/16.27 mark(isNat(X)) -> active(isNat(X)) 53.31/16.27 mark(s(X)) -> active(s(mark(X))) 53.31/16.27 mark(length(X)) -> active(length(mark(X))) 53.31/16.27 mark(nil) -> active(nil) 53.31/16.27 cons(mark(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, mark(X2)) -> cons(X1, X2) 53.31/16.27 cons(active(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, active(X2)) -> cons(X1, X2) 53.31/16.27 U11(mark(X)) -> U11(X) 53.31/16.27 U11(active(X)) -> U11(X) 53.31/16.27 U21(mark(X)) -> U21(X) 53.31/16.27 U21(active(X)) -> U21(X) 53.31/16.27 U31(mark(X)) -> U31(X) 53.31/16.27 U31(active(X)) -> U31(X) 53.31/16.27 U41(mark(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, mark(X2)) -> U41(X1, X2) 53.31/16.27 U41(active(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, active(X2)) -> U41(X1, X2) 53.31/16.27 U42(mark(X)) -> U42(X) 53.31/16.27 U42(active(X)) -> U42(X) 53.31/16.27 isNatIList(mark(X)) -> isNatIList(X) 53.31/16.27 isNatIList(active(X)) -> isNatIList(X) 53.31/16.27 U51(mark(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, mark(X2)) -> U51(X1, X2) 53.31/16.27 U51(active(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, active(X2)) -> U51(X1, X2) 53.31/16.27 U52(mark(X)) -> U52(X) 53.31/16.27 U52(active(X)) -> U52(X) 53.31/16.27 isNatList(mark(X)) -> isNatList(X) 53.31/16.27 isNatList(active(X)) -> isNatList(X) 53.31/16.27 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.31/16.27 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.31/16.27 U62(mark(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, mark(X2)) -> U62(X1, X2) 53.31/16.27 U62(active(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, active(X2)) -> U62(X1, X2) 53.31/16.27 isNat(mark(X)) -> isNat(X) 53.31/16.27 isNat(active(X)) -> isNat(X) 53.31/16.27 s(mark(X)) -> s(X) 53.31/16.27 s(active(X)) -> s(X) 53.31/16.27 length(mark(X)) -> length(X) 53.31/16.27 length(active(X)) -> length(X) 53.31/16.27 53.31/16.27 The set Q consists of the following terms: 53.31/16.27 53.31/16.27 active(zeros) 53.31/16.27 active(U11(tt)) 53.31/16.27 active(U21(tt)) 53.31/16.27 active(U31(tt)) 53.31/16.27 active(U41(tt, x0)) 53.31/16.27 active(U42(tt)) 53.31/16.27 active(U51(tt, x0)) 53.31/16.27 active(U52(tt)) 53.31/16.27 active(U61(tt, x0, x1)) 53.31/16.27 active(U62(tt, x0)) 53.31/16.27 active(isNat(0)) 53.31/16.27 active(isNat(length(x0))) 53.31/16.27 active(isNat(s(x0))) 53.31/16.27 active(isNatIList(x0)) 53.31/16.27 active(isNatList(nil)) 53.31/16.27 active(isNatList(cons(x0, x1))) 53.31/16.27 active(length(nil)) 53.31/16.27 active(length(cons(x0, x1))) 53.31/16.27 mark(zeros) 53.31/16.27 mark(cons(x0, x1)) 53.31/16.27 mark(0) 53.31/16.27 mark(U11(x0)) 53.31/16.27 mark(tt) 53.31/16.27 mark(U21(x0)) 53.31/16.27 mark(U31(x0)) 53.31/16.27 mark(U41(x0, x1)) 53.31/16.27 mark(U42(x0)) 53.31/16.27 mark(isNatIList(x0)) 53.31/16.27 mark(U51(x0, x1)) 53.31/16.27 mark(U52(x0)) 53.31/16.27 mark(isNatList(x0)) 53.31/16.27 mark(U61(x0, x1, x2)) 53.31/16.27 mark(U62(x0, x1)) 53.31/16.27 mark(isNat(x0)) 53.31/16.27 mark(s(x0)) 53.31/16.27 mark(length(x0)) 53.31/16.27 mark(nil) 53.31/16.27 cons(mark(x0), x1) 53.31/16.27 cons(x0, mark(x1)) 53.31/16.27 cons(active(x0), x1) 53.31/16.27 cons(x0, active(x1)) 53.31/16.27 U11(mark(x0)) 53.31/16.27 U11(active(x0)) 53.31/16.27 U21(mark(x0)) 53.31/16.27 U21(active(x0)) 53.31/16.27 U31(mark(x0)) 53.31/16.27 U31(active(x0)) 53.31/16.27 U41(mark(x0), x1) 53.31/16.27 U41(x0, mark(x1)) 53.31/16.27 U41(active(x0), x1) 53.31/16.27 U41(x0, active(x1)) 53.31/16.27 U42(mark(x0)) 53.31/16.27 U42(active(x0)) 53.31/16.27 isNatIList(mark(x0)) 53.31/16.27 isNatIList(active(x0)) 53.31/16.27 U51(mark(x0), x1) 53.31/16.27 U51(x0, mark(x1)) 53.31/16.27 U51(active(x0), x1) 53.31/16.27 U51(x0, active(x1)) 53.31/16.27 U52(mark(x0)) 53.31/16.27 U52(active(x0)) 53.31/16.27 isNatList(mark(x0)) 53.31/16.27 isNatList(active(x0)) 53.31/16.27 U61(mark(x0), x1, x2) 53.31/16.27 U61(x0, mark(x1), x2) 53.31/16.27 U61(x0, x1, mark(x2)) 53.31/16.27 U61(active(x0), x1, x2) 53.31/16.27 U61(x0, active(x1), x2) 53.31/16.27 U61(x0, x1, active(x2)) 53.31/16.27 U62(mark(x0), x1) 53.31/16.27 U62(x0, mark(x1)) 53.31/16.27 U62(active(x0), x1) 53.31/16.27 U62(x0, active(x1)) 53.31/16.27 isNat(mark(x0)) 53.31/16.27 isNat(active(x0)) 53.31/16.27 s(mark(x0)) 53.31/16.27 s(active(x0)) 53.31/16.27 length(mark(x0)) 53.31/16.27 length(active(x0)) 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (3) QTRSRRRProof (EQUIVALENT) 53.31/16.27 Used ordering: 53.31/16.27 Polynomial interpretation [POLO]: 53.31/16.27 53.31/16.27 POL(0) = 0 53.31/16.27 POL(U11(x_1)) = x_1 53.31/16.27 POL(U21(x_1)) = x_1 53.31/16.27 POL(U31(x_1)) = 1 + x_1 53.31/16.27 POL(U41(x_1, x_2)) = x_1 + 2*x_2 53.31/16.27 POL(U42(x_1)) = x_1 53.31/16.27 POL(U51(x_1, x_2)) = x_1 + x_2 53.31/16.27 POL(U52(x_1)) = x_1 53.31/16.27 POL(U61(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 53.31/16.27 POL(U62(x_1, x_2)) = x_1 + 2*x_2 53.31/16.27 POL(active(x_1)) = x_1 53.31/16.27 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.31/16.27 POL(isNat(x_1)) = 2*x_1 53.31/16.27 POL(isNatIList(x_1)) = x_1 53.31/16.27 POL(isNatList(x_1)) = x_1 53.31/16.27 POL(length(x_1)) = 2*x_1 53.31/16.27 POL(mark(x_1)) = x_1 53.31/16.27 POL(nil) = 0 53.31/16.27 POL(s(x_1)) = x_1 53.31/16.27 POL(tt) = 0 53.31/16.27 POL(zeros) = 0 53.31/16.27 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 53.31/16.27 53.31/16.27 active(U31(tt)) -> mark(tt) 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (4) 53.31/16.27 Obligation: 53.31/16.27 Q restricted rewrite system: 53.31/16.27 The TRS R consists of the following rules: 53.31/16.27 53.31/16.27 active(zeros) -> mark(cons(0, zeros)) 53.31/16.27 active(U11(tt)) -> mark(tt) 53.31/16.27 active(U21(tt)) -> mark(tt) 53.31/16.27 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.31/16.27 active(U42(tt)) -> mark(tt) 53.31/16.27 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.31/16.27 active(U52(tt)) -> mark(tt) 53.31/16.27 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.31/16.27 active(U62(tt, L)) -> mark(s(length(L))) 53.31/16.27 active(isNat(0)) -> mark(tt) 53.31/16.27 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 53.31/16.27 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.31/16.27 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.31/16.27 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.31/16.27 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.31/16.27 mark(zeros) -> active(zeros) 53.31/16.27 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.31/16.27 mark(0) -> active(0) 53.31/16.27 mark(U11(X)) -> active(U11(mark(X))) 53.31/16.27 mark(tt) -> active(tt) 53.31/16.27 mark(U21(X)) -> active(U21(mark(X))) 53.31/16.27 mark(U31(X)) -> active(U31(mark(X))) 53.31/16.27 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.31/16.27 mark(U42(X)) -> active(U42(mark(X))) 53.31/16.27 mark(isNatIList(X)) -> active(isNatIList(X)) 53.31/16.27 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.31/16.27 mark(U52(X)) -> active(U52(mark(X))) 53.31/16.27 mark(isNatList(X)) -> active(isNatList(X)) 53.31/16.27 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.31/16.27 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.31/16.27 mark(isNat(X)) -> active(isNat(X)) 53.31/16.27 mark(s(X)) -> active(s(mark(X))) 53.31/16.27 mark(length(X)) -> active(length(mark(X))) 53.31/16.27 mark(nil) -> active(nil) 53.31/16.27 cons(mark(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, mark(X2)) -> cons(X1, X2) 53.31/16.27 cons(active(X1), X2) -> cons(X1, X2) 53.31/16.27 cons(X1, active(X2)) -> cons(X1, X2) 53.31/16.27 U11(mark(X)) -> U11(X) 53.31/16.27 U11(active(X)) -> U11(X) 53.31/16.27 U21(mark(X)) -> U21(X) 53.31/16.27 U21(active(X)) -> U21(X) 53.31/16.27 U31(mark(X)) -> U31(X) 53.31/16.27 U31(active(X)) -> U31(X) 53.31/16.27 U41(mark(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, mark(X2)) -> U41(X1, X2) 53.31/16.27 U41(active(X1), X2) -> U41(X1, X2) 53.31/16.27 U41(X1, active(X2)) -> U41(X1, X2) 53.31/16.27 U42(mark(X)) -> U42(X) 53.31/16.27 U42(active(X)) -> U42(X) 53.31/16.27 isNatIList(mark(X)) -> isNatIList(X) 53.31/16.27 isNatIList(active(X)) -> isNatIList(X) 53.31/16.27 U51(mark(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, mark(X2)) -> U51(X1, X2) 53.31/16.27 U51(active(X1), X2) -> U51(X1, X2) 53.31/16.27 U51(X1, active(X2)) -> U51(X1, X2) 53.31/16.27 U52(mark(X)) -> U52(X) 53.31/16.27 U52(active(X)) -> U52(X) 53.31/16.27 isNatList(mark(X)) -> isNatList(X) 53.31/16.27 isNatList(active(X)) -> isNatList(X) 53.31/16.27 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.31/16.27 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.31/16.27 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.31/16.27 U62(mark(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, mark(X2)) -> U62(X1, X2) 53.31/16.27 U62(active(X1), X2) -> U62(X1, X2) 53.31/16.27 U62(X1, active(X2)) -> U62(X1, X2) 53.31/16.27 isNat(mark(X)) -> isNat(X) 53.31/16.27 isNat(active(X)) -> isNat(X) 53.31/16.27 s(mark(X)) -> s(X) 53.31/16.27 s(active(X)) -> s(X) 53.31/16.27 length(mark(X)) -> length(X) 53.31/16.27 length(active(X)) -> length(X) 53.31/16.27 53.31/16.27 The set Q consists of the following terms: 53.31/16.27 53.31/16.27 active(zeros) 53.31/16.27 active(U11(tt)) 53.31/16.27 active(U21(tt)) 53.31/16.27 active(U31(tt)) 53.31/16.27 active(U41(tt, x0)) 53.31/16.27 active(U42(tt)) 53.31/16.27 active(U51(tt, x0)) 53.31/16.27 active(U52(tt)) 53.31/16.27 active(U61(tt, x0, x1)) 53.31/16.27 active(U62(tt, x0)) 53.31/16.27 active(isNat(0)) 53.31/16.27 active(isNat(length(x0))) 53.31/16.27 active(isNat(s(x0))) 53.31/16.27 active(isNatIList(x0)) 53.31/16.27 active(isNatList(nil)) 53.31/16.27 active(isNatList(cons(x0, x1))) 53.31/16.27 active(length(nil)) 53.31/16.27 active(length(cons(x0, x1))) 53.31/16.27 mark(zeros) 53.31/16.27 mark(cons(x0, x1)) 53.31/16.27 mark(0) 53.31/16.27 mark(U11(x0)) 53.31/16.27 mark(tt) 53.31/16.27 mark(U21(x0)) 53.31/16.27 mark(U31(x0)) 53.31/16.27 mark(U41(x0, x1)) 53.31/16.27 mark(U42(x0)) 53.31/16.27 mark(isNatIList(x0)) 53.31/16.27 mark(U51(x0, x1)) 53.31/16.27 mark(U52(x0)) 53.31/16.27 mark(isNatList(x0)) 53.31/16.27 mark(U61(x0, x1, x2)) 53.31/16.27 mark(U62(x0, x1)) 53.31/16.27 mark(isNat(x0)) 53.31/16.27 mark(s(x0)) 53.31/16.27 mark(length(x0)) 53.31/16.27 mark(nil) 53.31/16.27 cons(mark(x0), x1) 53.31/16.27 cons(x0, mark(x1)) 53.31/16.27 cons(active(x0), x1) 53.31/16.27 cons(x0, active(x1)) 53.31/16.27 U11(mark(x0)) 53.31/16.27 U11(active(x0)) 53.31/16.27 U21(mark(x0)) 53.31/16.27 U21(active(x0)) 53.31/16.27 U31(mark(x0)) 53.31/16.27 U31(active(x0)) 53.31/16.27 U41(mark(x0), x1) 53.31/16.27 U41(x0, mark(x1)) 53.31/16.27 U41(active(x0), x1) 53.31/16.27 U41(x0, active(x1)) 53.31/16.27 U42(mark(x0)) 53.31/16.27 U42(active(x0)) 53.31/16.27 isNatIList(mark(x0)) 53.31/16.27 isNatIList(active(x0)) 53.31/16.27 U51(mark(x0), x1) 53.31/16.27 U51(x0, mark(x1)) 53.31/16.27 U51(active(x0), x1) 53.31/16.27 U51(x0, active(x1)) 53.31/16.27 U52(mark(x0)) 53.31/16.27 U52(active(x0)) 53.31/16.27 isNatList(mark(x0)) 53.31/16.27 isNatList(active(x0)) 53.31/16.27 U61(mark(x0), x1, x2) 53.31/16.27 U61(x0, mark(x1), x2) 53.31/16.27 U61(x0, x1, mark(x2)) 53.31/16.27 U61(active(x0), x1, x2) 53.31/16.27 U61(x0, active(x1), x2) 53.31/16.27 U61(x0, x1, active(x2)) 53.31/16.27 U62(mark(x0), x1) 53.31/16.27 U62(x0, mark(x1)) 53.31/16.27 U62(active(x0), x1) 53.31/16.27 U62(x0, active(x1)) 53.31/16.27 isNat(mark(x0)) 53.31/16.27 isNat(active(x0)) 53.31/16.27 s(mark(x0)) 53.31/16.27 s(active(x0)) 53.31/16.27 length(mark(x0)) 53.31/16.27 length(active(x0)) 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (5) QTRSRRRProof (EQUIVALENT) 53.31/16.27 Used ordering: 53.31/16.27 Polynomial interpretation [POLO]: 53.31/16.27 53.31/16.27 POL(0) = 0 53.31/16.27 POL(U11(x_1)) = 2*x_1 53.31/16.27 POL(U21(x_1)) = x_1 53.31/16.27 POL(U31(x_1)) = x_1 53.31/16.27 POL(U41(x_1, x_2)) = 2*x_1 + 2*x_2 53.31/16.27 POL(U42(x_1)) = 2*x_1 53.31/16.27 POL(U51(x_1, x_2)) = 2*x_1 + x_2 53.31/16.27 POL(U52(x_1)) = x_1 53.31/16.27 POL(U61(x_1, x_2, x_3)) = 1 + 2*x_1 + 2*x_2 + 2*x_3 53.31/16.27 POL(U62(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 53.31/16.27 POL(active(x_1)) = x_1 53.31/16.27 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.31/16.27 POL(isNat(x_1)) = x_1 53.31/16.27 POL(isNatIList(x_1)) = x_1 53.31/16.27 POL(isNatList(x_1)) = x_1 53.31/16.27 POL(length(x_1)) = 1 + 2*x_1 53.31/16.27 POL(mark(x_1)) = x_1 53.31/16.27 POL(nil) = 0 53.31/16.27 POL(s(x_1)) = x_1 53.31/16.27 POL(tt) = 0 53.31/16.27 POL(zeros) = 0 53.31/16.27 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 53.31/16.27 53.31/16.27 active(isNat(length(V1))) -> mark(U11(isNatList(V1))) 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 53.31/16.27 ---------------------------------------- 53.31/16.27 53.31/16.27 (6) 53.31/16.27 Obligation: 53.31/16.27 Q restricted rewrite system: 53.31/16.27 The TRS R consists of the following rules: 53.31/16.27 53.31/16.27 active(zeros) -> mark(cons(0, zeros)) 53.31/16.27 active(U11(tt)) -> mark(tt) 53.31/16.27 active(U21(tt)) -> mark(tt) 53.31/16.27 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.31/16.27 active(U42(tt)) -> mark(tt) 53.31/16.27 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.31/16.27 active(U52(tt)) -> mark(tt) 53.31/16.27 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.31/16.27 active(U62(tt, L)) -> mark(s(length(L))) 53.31/16.27 active(isNat(0)) -> mark(tt) 53.31/16.27 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.31/16.27 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.31/16.27 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.31/16.27 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.31/16.27 mark(zeros) -> active(zeros) 53.31/16.27 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.31/16.27 mark(0) -> active(0) 53.31/16.27 mark(U11(X)) -> active(U11(mark(X))) 53.31/16.27 mark(tt) -> active(tt) 53.31/16.27 mark(U21(X)) -> active(U21(mark(X))) 53.31/16.27 mark(U31(X)) -> active(U31(mark(X))) 53.31/16.27 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.31/16.27 mark(U42(X)) -> active(U42(mark(X))) 53.31/16.27 mark(isNatIList(X)) -> active(isNatIList(X)) 53.31/16.27 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.31/16.27 mark(U52(X)) -> active(U52(mark(X))) 53.31/16.27 mark(isNatList(X)) -> active(isNatList(X)) 53.31/16.27 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.31/16.27 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.31/16.27 mark(isNat(X)) -> active(isNat(X)) 53.31/16.27 mark(s(X)) -> active(s(mark(X))) 53.31/16.27 mark(length(X)) -> active(length(mark(X))) 53.31/16.27 mark(nil) -> active(nil) 53.46/16.28 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.28 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.28 U11(mark(X)) -> U11(X) 53.46/16.28 U11(active(X)) -> U11(X) 53.46/16.28 U21(mark(X)) -> U21(X) 53.46/16.28 U21(active(X)) -> U21(X) 53.46/16.28 U31(mark(X)) -> U31(X) 53.46/16.28 U31(active(X)) -> U31(X) 53.46/16.28 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.28 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.28 U42(mark(X)) -> U42(X) 53.46/16.28 U42(active(X)) -> U42(X) 53.46/16.28 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.28 isNatIList(active(X)) -> isNatIList(X) 53.46/16.28 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.28 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.28 U52(mark(X)) -> U52(X) 53.46/16.28 U52(active(X)) -> U52(X) 53.46/16.28 isNatList(mark(X)) -> isNatList(X) 53.46/16.28 isNatList(active(X)) -> isNatList(X) 53.46/16.28 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.28 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.28 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.28 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.28 isNat(mark(X)) -> isNat(X) 53.46/16.28 isNat(active(X)) -> isNat(X) 53.46/16.28 s(mark(X)) -> s(X) 53.46/16.28 s(active(X)) -> s(X) 53.46/16.28 length(mark(X)) -> length(X) 53.46/16.28 length(active(X)) -> length(X) 53.46/16.28 53.46/16.28 The set Q consists of the following terms: 53.46/16.28 53.46/16.28 active(zeros) 53.46/16.28 active(U11(tt)) 53.46/16.28 active(U21(tt)) 53.46/16.28 active(U31(tt)) 53.46/16.28 active(U41(tt, x0)) 53.46/16.28 active(U42(tt)) 53.46/16.28 active(U51(tt, x0)) 53.46/16.28 active(U52(tt)) 53.46/16.28 active(U61(tt, x0, x1)) 53.46/16.28 active(U62(tt, x0)) 53.46/16.28 active(isNat(0)) 53.46/16.28 active(isNat(length(x0))) 53.46/16.28 active(isNat(s(x0))) 53.46/16.28 active(isNatIList(x0)) 53.46/16.28 active(isNatList(nil)) 53.46/16.28 active(isNatList(cons(x0, x1))) 53.46/16.28 active(length(nil)) 53.46/16.28 active(length(cons(x0, x1))) 53.46/16.28 mark(zeros) 53.46/16.28 mark(cons(x0, x1)) 53.46/16.28 mark(0) 53.46/16.28 mark(U11(x0)) 53.46/16.28 mark(tt) 53.46/16.28 mark(U21(x0)) 53.46/16.28 mark(U31(x0)) 53.46/16.28 mark(U41(x0, x1)) 53.46/16.28 mark(U42(x0)) 53.46/16.28 mark(isNatIList(x0)) 53.46/16.28 mark(U51(x0, x1)) 53.46/16.28 mark(U52(x0)) 53.46/16.28 mark(isNatList(x0)) 53.46/16.28 mark(U61(x0, x1, x2)) 53.46/16.28 mark(U62(x0, x1)) 53.46/16.28 mark(isNat(x0)) 53.46/16.28 mark(s(x0)) 53.46/16.28 mark(length(x0)) 53.46/16.28 mark(nil) 53.46/16.28 cons(mark(x0), x1) 53.46/16.28 cons(x0, mark(x1)) 53.46/16.28 cons(active(x0), x1) 53.46/16.28 cons(x0, active(x1)) 53.46/16.28 U11(mark(x0)) 53.46/16.28 U11(active(x0)) 53.46/16.28 U21(mark(x0)) 53.46/16.28 U21(active(x0)) 53.46/16.28 U31(mark(x0)) 53.46/16.28 U31(active(x0)) 53.46/16.28 U41(mark(x0), x1) 53.46/16.28 U41(x0, mark(x1)) 53.46/16.28 U41(active(x0), x1) 53.46/16.28 U41(x0, active(x1)) 53.46/16.28 U42(mark(x0)) 53.46/16.28 U42(active(x0)) 53.46/16.28 isNatIList(mark(x0)) 53.46/16.28 isNatIList(active(x0)) 53.46/16.28 U51(mark(x0), x1) 53.46/16.28 U51(x0, mark(x1)) 53.46/16.28 U51(active(x0), x1) 53.46/16.28 U51(x0, active(x1)) 53.46/16.28 U52(mark(x0)) 53.46/16.28 U52(active(x0)) 53.46/16.28 isNatList(mark(x0)) 53.46/16.28 isNatList(active(x0)) 53.46/16.28 U61(mark(x0), x1, x2) 53.46/16.28 U61(x0, mark(x1), x2) 53.46/16.28 U61(x0, x1, mark(x2)) 53.46/16.28 U61(active(x0), x1, x2) 53.46/16.28 U61(x0, active(x1), x2) 53.46/16.28 U61(x0, x1, active(x2)) 53.46/16.28 U62(mark(x0), x1) 53.46/16.28 U62(x0, mark(x1)) 53.46/16.28 U62(active(x0), x1) 53.46/16.28 U62(x0, active(x1)) 53.46/16.28 isNat(mark(x0)) 53.46/16.28 isNat(active(x0)) 53.46/16.28 s(mark(x0)) 53.46/16.28 s(active(x0)) 53.46/16.28 length(mark(x0)) 53.46/16.28 length(active(x0)) 53.46/16.28 53.46/16.28 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (7) QTRSRRRProof (EQUIVALENT) 53.46/16.28 Used ordering: 53.46/16.28 Polynomial interpretation [POLO]: 53.46/16.28 53.46/16.28 POL(0) = 0 53.46/16.28 POL(U11(x_1)) = 1 + x_1 53.46/16.28 POL(U21(x_1)) = x_1 53.46/16.28 POL(U31(x_1)) = x_1 53.46/16.28 POL(U41(x_1, x_2)) = x_1 + 2*x_2 53.46/16.28 POL(U42(x_1)) = x_1 53.46/16.28 POL(U51(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.28 POL(U52(x_1)) = 2*x_1 53.46/16.28 POL(U61(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 53.46/16.28 POL(U62(x_1, x_2)) = x_1 + 2*x_2 53.46/16.28 POL(active(x_1)) = x_1 53.46/16.28 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.28 POL(isNat(x_1)) = x_1 53.46/16.28 POL(isNatIList(x_1)) = x_1 53.46/16.28 POL(isNatList(x_1)) = x_1 53.46/16.28 POL(length(x_1)) = 2*x_1 53.46/16.28 POL(mark(x_1)) = x_1 53.46/16.28 POL(nil) = 0 53.46/16.28 POL(s(x_1)) = x_1 53.46/16.28 POL(tt) = 0 53.46/16.28 POL(zeros) = 0 53.46/16.28 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 53.46/16.28 53.46/16.28 active(U11(tt)) -> mark(tt) 53.46/16.28 53.46/16.28 53.46/16.28 53.46/16.28 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (8) 53.46/16.28 Obligation: 53.46/16.28 Q restricted rewrite system: 53.46/16.28 The TRS R consists of the following rules: 53.46/16.28 53.46/16.28 active(zeros) -> mark(cons(0, zeros)) 53.46/16.28 active(U21(tt)) -> mark(tt) 53.46/16.28 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.28 active(U42(tt)) -> mark(tt) 53.46/16.28 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.28 active(U52(tt)) -> mark(tt) 53.46/16.28 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.28 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.28 active(isNat(0)) -> mark(tt) 53.46/16.28 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.28 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.28 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.28 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.28 mark(zeros) -> active(zeros) 53.46/16.28 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.28 mark(0) -> active(0) 53.46/16.28 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.28 mark(tt) -> active(tt) 53.46/16.28 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.28 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.28 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.28 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.28 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.28 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.28 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.28 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.28 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.28 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.28 mark(isNat(X)) -> active(isNat(X)) 53.46/16.28 mark(s(X)) -> active(s(mark(X))) 53.46/16.28 mark(length(X)) -> active(length(mark(X))) 53.46/16.28 mark(nil) -> active(nil) 53.46/16.28 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.28 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.28 U11(mark(X)) -> U11(X) 53.46/16.28 U11(active(X)) -> U11(X) 53.46/16.28 U21(mark(X)) -> U21(X) 53.46/16.28 U21(active(X)) -> U21(X) 53.46/16.28 U31(mark(X)) -> U31(X) 53.46/16.28 U31(active(X)) -> U31(X) 53.46/16.28 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.28 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.28 U42(mark(X)) -> U42(X) 53.46/16.28 U42(active(X)) -> U42(X) 53.46/16.28 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.28 isNatIList(active(X)) -> isNatIList(X) 53.46/16.28 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.28 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.28 U52(mark(X)) -> U52(X) 53.46/16.28 U52(active(X)) -> U52(X) 53.46/16.28 isNatList(mark(X)) -> isNatList(X) 53.46/16.28 isNatList(active(X)) -> isNatList(X) 53.46/16.28 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.28 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.28 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.28 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.28 isNat(mark(X)) -> isNat(X) 53.46/16.28 isNat(active(X)) -> isNat(X) 53.46/16.28 s(mark(X)) -> s(X) 53.46/16.28 s(active(X)) -> s(X) 53.46/16.28 length(mark(X)) -> length(X) 53.46/16.28 length(active(X)) -> length(X) 53.46/16.28 53.46/16.28 The set Q consists of the following terms: 53.46/16.28 53.46/16.28 active(zeros) 53.46/16.28 active(U11(tt)) 53.46/16.28 active(U21(tt)) 53.46/16.28 active(U31(tt)) 53.46/16.28 active(U41(tt, x0)) 53.46/16.28 active(U42(tt)) 53.46/16.28 active(U51(tt, x0)) 53.46/16.28 active(U52(tt)) 53.46/16.28 active(U61(tt, x0, x1)) 53.46/16.28 active(U62(tt, x0)) 53.46/16.28 active(isNat(0)) 53.46/16.28 active(isNat(length(x0))) 53.46/16.28 active(isNat(s(x0))) 53.46/16.28 active(isNatIList(x0)) 53.46/16.28 active(isNatList(nil)) 53.46/16.28 active(isNatList(cons(x0, x1))) 53.46/16.28 active(length(nil)) 53.46/16.28 active(length(cons(x0, x1))) 53.46/16.28 mark(zeros) 53.46/16.28 mark(cons(x0, x1)) 53.46/16.28 mark(0) 53.46/16.28 mark(U11(x0)) 53.46/16.28 mark(tt) 53.46/16.28 mark(U21(x0)) 53.46/16.28 mark(U31(x0)) 53.46/16.28 mark(U41(x0, x1)) 53.46/16.28 mark(U42(x0)) 53.46/16.28 mark(isNatIList(x0)) 53.46/16.28 mark(U51(x0, x1)) 53.46/16.28 mark(U52(x0)) 53.46/16.28 mark(isNatList(x0)) 53.46/16.28 mark(U61(x0, x1, x2)) 53.46/16.28 mark(U62(x0, x1)) 53.46/16.28 mark(isNat(x0)) 53.46/16.28 mark(s(x0)) 53.46/16.28 mark(length(x0)) 53.46/16.28 mark(nil) 53.46/16.28 cons(mark(x0), x1) 53.46/16.28 cons(x0, mark(x1)) 53.46/16.28 cons(active(x0), x1) 53.46/16.28 cons(x0, active(x1)) 53.46/16.28 U11(mark(x0)) 53.46/16.28 U11(active(x0)) 53.46/16.28 U21(mark(x0)) 53.46/16.28 U21(active(x0)) 53.46/16.28 U31(mark(x0)) 53.46/16.28 U31(active(x0)) 53.46/16.28 U41(mark(x0), x1) 53.46/16.28 U41(x0, mark(x1)) 53.46/16.28 U41(active(x0), x1) 53.46/16.28 U41(x0, active(x1)) 53.46/16.28 U42(mark(x0)) 53.46/16.28 U42(active(x0)) 53.46/16.28 isNatIList(mark(x0)) 53.46/16.28 isNatIList(active(x0)) 53.46/16.28 U51(mark(x0), x1) 53.46/16.28 U51(x0, mark(x1)) 53.46/16.28 U51(active(x0), x1) 53.46/16.28 U51(x0, active(x1)) 53.46/16.28 U52(mark(x0)) 53.46/16.28 U52(active(x0)) 53.46/16.28 isNatList(mark(x0)) 53.46/16.28 isNatList(active(x0)) 53.46/16.28 U61(mark(x0), x1, x2) 53.46/16.28 U61(x0, mark(x1), x2) 53.46/16.28 U61(x0, x1, mark(x2)) 53.46/16.28 U61(active(x0), x1, x2) 53.46/16.28 U61(x0, active(x1), x2) 53.46/16.28 U61(x0, x1, active(x2)) 53.46/16.28 U62(mark(x0), x1) 53.46/16.28 U62(x0, mark(x1)) 53.46/16.28 U62(active(x0), x1) 53.46/16.28 U62(x0, active(x1)) 53.46/16.28 isNat(mark(x0)) 53.46/16.28 isNat(active(x0)) 53.46/16.28 s(mark(x0)) 53.46/16.28 s(active(x0)) 53.46/16.28 length(mark(x0)) 53.46/16.28 length(active(x0)) 53.46/16.28 53.46/16.28 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (9) DependencyPairsProof (EQUIVALENT) 53.46/16.28 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (10) 53.46/16.28 Obligation: 53.46/16.28 Q DP problem: 53.46/16.28 The TRS P consists of the following rules: 53.46/16.28 53.46/16.28 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.28 ACTIVE(zeros) -> CONS(0, zeros) 53.46/16.28 ACTIVE(U21(tt)) -> MARK(tt) 53.46/16.28 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.28 ACTIVE(U41(tt, V2)) -> U42^1(isNatIList(V2)) 53.46/16.28 ACTIVE(U41(tt, V2)) -> ISNATILIST(V2) 53.46/16.28 ACTIVE(U42(tt)) -> MARK(tt) 53.46/16.28 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.28 ACTIVE(U51(tt, V2)) -> U52^1(isNatList(V2)) 53.46/16.28 ACTIVE(U51(tt, V2)) -> ISNATLIST(V2) 53.46/16.28 ACTIVE(U52(tt)) -> MARK(tt) 53.46/16.28 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.28 ACTIVE(U61(tt, L, N)) -> U62^1(isNat(N), L) 53.46/16.28 ACTIVE(U61(tt, L, N)) -> ISNAT(N) 53.46/16.28 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.28 ACTIVE(U62(tt, L)) -> S(length(L)) 53.46/16.28 ACTIVE(U62(tt, L)) -> LENGTH(L) 53.46/16.28 ACTIVE(isNat(0)) -> MARK(tt) 53.46/16.28 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.28 ACTIVE(isNat(s(V1))) -> U21^1(isNat(V1)) 53.46/16.28 ACTIVE(isNat(s(V1))) -> ISNAT(V1) 53.46/16.28 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.28 ACTIVE(isNatIList(cons(V1, V2))) -> U41^1(isNat(V1), V2) 53.46/16.28 ACTIVE(isNatIList(cons(V1, V2))) -> ISNAT(V1) 53.46/16.28 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.28 ACTIVE(isNatList(cons(V1, V2))) -> U51^1(isNat(V1), V2) 53.46/16.28 ACTIVE(isNatList(cons(V1, V2))) -> ISNAT(V1) 53.46/16.28 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.28 ACTIVE(length(cons(N, L))) -> U61^1(isNatList(L), L, N) 53.46/16.28 ACTIVE(length(cons(N, L))) -> ISNATLIST(L) 53.46/16.28 MARK(zeros) -> ACTIVE(zeros) 53.46/16.28 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.28 MARK(cons(X1, X2)) -> CONS(mark(X1), X2) 53.46/16.28 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.28 MARK(0) -> ACTIVE(0) 53.46/16.28 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.28 MARK(U11(X)) -> U11^1(mark(X)) 53.46/16.28 MARK(U11(X)) -> MARK(X) 53.46/16.28 MARK(tt) -> ACTIVE(tt) 53.46/16.28 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.28 MARK(U21(X)) -> U21^1(mark(X)) 53.46/16.28 MARK(U21(X)) -> MARK(X) 53.46/16.28 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.28 MARK(U31(X)) -> U31^1(mark(X)) 53.46/16.28 MARK(U31(X)) -> MARK(X) 53.46/16.28 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.28 MARK(U41(X1, X2)) -> U41^1(mark(X1), X2) 53.46/16.28 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.28 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.28 MARK(U42(X)) -> U42^1(mark(X)) 53.46/16.28 MARK(U42(X)) -> MARK(X) 53.46/16.28 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.28 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.28 MARK(U51(X1, X2)) -> U51^1(mark(X1), X2) 53.46/16.28 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.28 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.28 MARK(U52(X)) -> U52^1(mark(X)) 53.46/16.28 MARK(U52(X)) -> MARK(X) 53.46/16.28 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.28 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.28 MARK(U61(X1, X2, X3)) -> U61^1(mark(X1), X2, X3) 53.46/16.28 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.28 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.28 MARK(U62(X1, X2)) -> U62^1(mark(X1), X2) 53.46/16.28 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.28 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.28 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.28 MARK(s(X)) -> S(mark(X)) 53.46/16.28 MARK(s(X)) -> MARK(X) 53.46/16.28 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.28 MARK(length(X)) -> LENGTH(mark(X)) 53.46/16.28 MARK(length(X)) -> MARK(X) 53.46/16.28 MARK(nil) -> ACTIVE(nil) 53.46/16.28 CONS(mark(X1), X2) -> CONS(X1, X2) 53.46/16.28 CONS(X1, mark(X2)) -> CONS(X1, X2) 53.46/16.28 CONS(active(X1), X2) -> CONS(X1, X2) 53.46/16.28 CONS(X1, active(X2)) -> CONS(X1, X2) 53.46/16.28 U11^1(mark(X)) -> U11^1(X) 53.46/16.28 U11^1(active(X)) -> U11^1(X) 53.46/16.28 U21^1(mark(X)) -> U21^1(X) 53.46/16.28 U21^1(active(X)) -> U21^1(X) 53.46/16.28 U31^1(mark(X)) -> U31^1(X) 53.46/16.28 U31^1(active(X)) -> U31^1(X) 53.46/16.28 U41^1(mark(X1), X2) -> U41^1(X1, X2) 53.46/16.28 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 53.46/16.28 U41^1(active(X1), X2) -> U41^1(X1, X2) 53.46/16.28 U41^1(X1, active(X2)) -> U41^1(X1, X2) 53.46/16.28 U42^1(mark(X)) -> U42^1(X) 53.46/16.28 U42^1(active(X)) -> U42^1(X) 53.46/16.28 ISNATILIST(mark(X)) -> ISNATILIST(X) 53.46/16.28 ISNATILIST(active(X)) -> ISNATILIST(X) 53.46/16.28 U51^1(mark(X1), X2) -> U51^1(X1, X2) 53.46/16.28 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 53.46/16.28 U51^1(active(X1), X2) -> U51^1(X1, X2) 53.46/16.28 U51^1(X1, active(X2)) -> U51^1(X1, X2) 53.46/16.28 U52^1(mark(X)) -> U52^1(X) 53.46/16.28 U52^1(active(X)) -> U52^1(X) 53.46/16.28 ISNATLIST(mark(X)) -> ISNATLIST(X) 53.46/16.28 ISNATLIST(active(X)) -> ISNATLIST(X) 53.46/16.28 U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.28 U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.28 U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) 53.46/16.28 U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.28 U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.28 U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) 53.46/16.28 U62^1(mark(X1), X2) -> U62^1(X1, X2) 53.46/16.28 U62^1(X1, mark(X2)) -> U62^1(X1, X2) 53.46/16.28 U62^1(active(X1), X2) -> U62^1(X1, X2) 53.46/16.28 U62^1(X1, active(X2)) -> U62^1(X1, X2) 53.46/16.28 ISNAT(mark(X)) -> ISNAT(X) 53.46/16.28 ISNAT(active(X)) -> ISNAT(X) 53.46/16.28 S(mark(X)) -> S(X) 53.46/16.28 S(active(X)) -> S(X) 53.46/16.28 LENGTH(mark(X)) -> LENGTH(X) 53.46/16.28 LENGTH(active(X)) -> LENGTH(X) 53.46/16.28 53.46/16.28 The TRS R consists of the following rules: 53.46/16.28 53.46/16.28 active(zeros) -> mark(cons(0, zeros)) 53.46/16.28 active(U21(tt)) -> mark(tt) 53.46/16.28 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.28 active(U42(tt)) -> mark(tt) 53.46/16.28 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.28 active(U52(tt)) -> mark(tt) 53.46/16.28 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.28 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.28 active(isNat(0)) -> mark(tt) 53.46/16.28 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.28 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.28 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.28 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.28 mark(zeros) -> active(zeros) 53.46/16.28 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.28 mark(0) -> active(0) 53.46/16.28 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.28 mark(tt) -> active(tt) 53.46/16.28 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.28 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.28 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.28 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.28 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.28 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.28 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.28 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.28 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.28 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.28 mark(isNat(X)) -> active(isNat(X)) 53.46/16.28 mark(s(X)) -> active(s(mark(X))) 53.46/16.28 mark(length(X)) -> active(length(mark(X))) 53.46/16.28 mark(nil) -> active(nil) 53.46/16.28 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.28 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.28 U11(mark(X)) -> U11(X) 53.46/16.28 U11(active(X)) -> U11(X) 53.46/16.28 U21(mark(X)) -> U21(X) 53.46/16.28 U21(active(X)) -> U21(X) 53.46/16.28 U31(mark(X)) -> U31(X) 53.46/16.28 U31(active(X)) -> U31(X) 53.46/16.28 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.28 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.28 U42(mark(X)) -> U42(X) 53.46/16.28 U42(active(X)) -> U42(X) 53.46/16.28 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.28 isNatIList(active(X)) -> isNatIList(X) 53.46/16.28 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.28 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.28 U52(mark(X)) -> U52(X) 53.46/16.28 U52(active(X)) -> U52(X) 53.46/16.28 isNatList(mark(X)) -> isNatList(X) 53.46/16.28 isNatList(active(X)) -> isNatList(X) 53.46/16.28 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.28 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.28 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.28 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.28 isNat(mark(X)) -> isNat(X) 53.46/16.28 isNat(active(X)) -> isNat(X) 53.46/16.28 s(mark(X)) -> s(X) 53.46/16.28 s(active(X)) -> s(X) 53.46/16.28 length(mark(X)) -> length(X) 53.46/16.28 length(active(X)) -> length(X) 53.46/16.28 53.46/16.28 The set Q consists of the following terms: 53.46/16.28 53.46/16.28 active(zeros) 53.46/16.28 active(U11(tt)) 53.46/16.28 active(U21(tt)) 53.46/16.28 active(U31(tt)) 53.46/16.28 active(U41(tt, x0)) 53.46/16.28 active(U42(tt)) 53.46/16.28 active(U51(tt, x0)) 53.46/16.28 active(U52(tt)) 53.46/16.28 active(U61(tt, x0, x1)) 53.46/16.28 active(U62(tt, x0)) 53.46/16.28 active(isNat(0)) 53.46/16.28 active(isNat(length(x0))) 53.46/16.28 active(isNat(s(x0))) 53.46/16.28 active(isNatIList(x0)) 53.46/16.28 active(isNatList(nil)) 53.46/16.28 active(isNatList(cons(x0, x1))) 53.46/16.28 active(length(nil)) 53.46/16.28 active(length(cons(x0, x1))) 53.46/16.28 mark(zeros) 53.46/16.28 mark(cons(x0, x1)) 53.46/16.28 mark(0) 53.46/16.28 mark(U11(x0)) 53.46/16.28 mark(tt) 53.46/16.28 mark(U21(x0)) 53.46/16.28 mark(U31(x0)) 53.46/16.28 mark(U41(x0, x1)) 53.46/16.28 mark(U42(x0)) 53.46/16.28 mark(isNatIList(x0)) 53.46/16.28 mark(U51(x0, x1)) 53.46/16.28 mark(U52(x0)) 53.46/16.28 mark(isNatList(x0)) 53.46/16.28 mark(U61(x0, x1, x2)) 53.46/16.28 mark(U62(x0, x1)) 53.46/16.28 mark(isNat(x0)) 53.46/16.28 mark(s(x0)) 53.46/16.28 mark(length(x0)) 53.46/16.28 mark(nil) 53.46/16.28 cons(mark(x0), x1) 53.46/16.28 cons(x0, mark(x1)) 53.46/16.28 cons(active(x0), x1) 53.46/16.28 cons(x0, active(x1)) 53.46/16.28 U11(mark(x0)) 53.46/16.28 U11(active(x0)) 53.46/16.28 U21(mark(x0)) 53.46/16.28 U21(active(x0)) 53.46/16.28 U31(mark(x0)) 53.46/16.28 U31(active(x0)) 53.46/16.28 U41(mark(x0), x1) 53.46/16.28 U41(x0, mark(x1)) 53.46/16.28 U41(active(x0), x1) 53.46/16.28 U41(x0, active(x1)) 53.46/16.28 U42(mark(x0)) 53.46/16.28 U42(active(x0)) 53.46/16.28 isNatIList(mark(x0)) 53.46/16.28 isNatIList(active(x0)) 53.46/16.28 U51(mark(x0), x1) 53.46/16.28 U51(x0, mark(x1)) 53.46/16.28 U51(active(x0), x1) 53.46/16.28 U51(x0, active(x1)) 53.46/16.28 U52(mark(x0)) 53.46/16.28 U52(active(x0)) 53.46/16.28 isNatList(mark(x0)) 53.46/16.28 isNatList(active(x0)) 53.46/16.28 U61(mark(x0), x1, x2) 53.46/16.28 U61(x0, mark(x1), x2) 53.46/16.28 U61(x0, x1, mark(x2)) 53.46/16.28 U61(active(x0), x1, x2) 53.46/16.28 U61(x0, active(x1), x2) 53.46/16.28 U61(x0, x1, active(x2)) 53.46/16.28 U62(mark(x0), x1) 53.46/16.28 U62(x0, mark(x1)) 53.46/16.28 U62(active(x0), x1) 53.46/16.28 U62(x0, active(x1)) 53.46/16.28 isNat(mark(x0)) 53.46/16.28 isNat(active(x0)) 53.46/16.28 s(mark(x0)) 53.46/16.28 s(active(x0)) 53.46/16.28 length(mark(x0)) 53.46/16.28 length(active(x0)) 53.46/16.28 53.46/16.28 We have to consider all minimal (P,Q,R)-chains. 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (11) DependencyGraphProof (EQUIVALENT) 53.46/16.28 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 16 SCCs with 36 less nodes. 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (12) 53.46/16.28 Complex Obligation (AND) 53.46/16.28 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (13) 53.46/16.28 Obligation: 53.46/16.28 Q DP problem: 53.46/16.28 The TRS P consists of the following rules: 53.46/16.28 53.46/16.28 LENGTH(active(X)) -> LENGTH(X) 53.46/16.28 LENGTH(mark(X)) -> LENGTH(X) 53.46/16.28 53.46/16.28 The TRS R consists of the following rules: 53.46/16.28 53.46/16.28 active(zeros) -> mark(cons(0, zeros)) 53.46/16.28 active(U21(tt)) -> mark(tt) 53.46/16.28 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.28 active(U42(tt)) -> mark(tt) 53.46/16.28 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.28 active(U52(tt)) -> mark(tt) 53.46/16.28 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.28 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.28 active(isNat(0)) -> mark(tt) 53.46/16.28 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.28 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.28 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.28 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.28 mark(zeros) -> active(zeros) 53.46/16.28 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.28 mark(0) -> active(0) 53.46/16.28 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.28 mark(tt) -> active(tt) 53.46/16.28 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.28 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.28 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.28 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.28 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.28 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.28 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.28 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.28 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.28 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.28 mark(isNat(X)) -> active(isNat(X)) 53.46/16.28 mark(s(X)) -> active(s(mark(X))) 53.46/16.28 mark(length(X)) -> active(length(mark(X))) 53.46/16.28 mark(nil) -> active(nil) 53.46/16.28 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.28 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.28 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.28 U11(mark(X)) -> U11(X) 53.46/16.28 U11(active(X)) -> U11(X) 53.46/16.28 U21(mark(X)) -> U21(X) 53.46/16.28 U21(active(X)) -> U21(X) 53.46/16.28 U31(mark(X)) -> U31(X) 53.46/16.28 U31(active(X)) -> U31(X) 53.46/16.28 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.28 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.28 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.28 U42(mark(X)) -> U42(X) 53.46/16.28 U42(active(X)) -> U42(X) 53.46/16.28 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.28 isNatIList(active(X)) -> isNatIList(X) 53.46/16.28 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.28 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.28 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.28 U52(mark(X)) -> U52(X) 53.46/16.28 U52(active(X)) -> U52(X) 53.46/16.28 isNatList(mark(X)) -> isNatList(X) 53.46/16.28 isNatList(active(X)) -> isNatList(X) 53.46/16.28 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.28 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.28 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.28 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.28 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.28 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.28 isNat(mark(X)) -> isNat(X) 53.46/16.28 isNat(active(X)) -> isNat(X) 53.46/16.28 s(mark(X)) -> s(X) 53.46/16.28 s(active(X)) -> s(X) 53.46/16.28 length(mark(X)) -> length(X) 53.46/16.28 length(active(X)) -> length(X) 53.46/16.28 53.46/16.28 The set Q consists of the following terms: 53.46/16.28 53.46/16.28 active(zeros) 53.46/16.28 active(U11(tt)) 53.46/16.28 active(U21(tt)) 53.46/16.28 active(U31(tt)) 53.46/16.28 active(U41(tt, x0)) 53.46/16.28 active(U42(tt)) 53.46/16.28 active(U51(tt, x0)) 53.46/16.28 active(U52(tt)) 53.46/16.28 active(U61(tt, x0, x1)) 53.46/16.28 active(U62(tt, x0)) 53.46/16.28 active(isNat(0)) 53.46/16.28 active(isNat(length(x0))) 53.46/16.28 active(isNat(s(x0))) 53.46/16.28 active(isNatIList(x0)) 53.46/16.28 active(isNatList(nil)) 53.46/16.28 active(isNatList(cons(x0, x1))) 53.46/16.28 active(length(nil)) 53.46/16.28 active(length(cons(x0, x1))) 53.46/16.28 mark(zeros) 53.46/16.28 mark(cons(x0, x1)) 53.46/16.28 mark(0) 53.46/16.28 mark(U11(x0)) 53.46/16.28 mark(tt) 53.46/16.28 mark(U21(x0)) 53.46/16.28 mark(U31(x0)) 53.46/16.28 mark(U41(x0, x1)) 53.46/16.28 mark(U42(x0)) 53.46/16.28 mark(isNatIList(x0)) 53.46/16.28 mark(U51(x0, x1)) 53.46/16.28 mark(U52(x0)) 53.46/16.28 mark(isNatList(x0)) 53.46/16.28 mark(U61(x0, x1, x2)) 53.46/16.28 mark(U62(x0, x1)) 53.46/16.28 mark(isNat(x0)) 53.46/16.28 mark(s(x0)) 53.46/16.28 mark(length(x0)) 53.46/16.28 mark(nil) 53.46/16.28 cons(mark(x0), x1) 53.46/16.28 cons(x0, mark(x1)) 53.46/16.28 cons(active(x0), x1) 53.46/16.28 cons(x0, active(x1)) 53.46/16.28 U11(mark(x0)) 53.46/16.28 U11(active(x0)) 53.46/16.28 U21(mark(x0)) 53.46/16.28 U21(active(x0)) 53.46/16.28 U31(mark(x0)) 53.46/16.28 U31(active(x0)) 53.46/16.28 U41(mark(x0), x1) 53.46/16.28 U41(x0, mark(x1)) 53.46/16.28 U41(active(x0), x1) 53.46/16.28 U41(x0, active(x1)) 53.46/16.28 U42(mark(x0)) 53.46/16.28 U42(active(x0)) 53.46/16.28 isNatIList(mark(x0)) 53.46/16.28 isNatIList(active(x0)) 53.46/16.28 U51(mark(x0), x1) 53.46/16.28 U51(x0, mark(x1)) 53.46/16.28 U51(active(x0), x1) 53.46/16.28 U51(x0, active(x1)) 53.46/16.28 U52(mark(x0)) 53.46/16.28 U52(active(x0)) 53.46/16.28 isNatList(mark(x0)) 53.46/16.28 isNatList(active(x0)) 53.46/16.28 U61(mark(x0), x1, x2) 53.46/16.28 U61(x0, mark(x1), x2) 53.46/16.28 U61(x0, x1, mark(x2)) 53.46/16.28 U61(active(x0), x1, x2) 53.46/16.28 U61(x0, active(x1), x2) 53.46/16.28 U61(x0, x1, active(x2)) 53.46/16.28 U62(mark(x0), x1) 53.46/16.28 U62(x0, mark(x1)) 53.46/16.28 U62(active(x0), x1) 53.46/16.28 U62(x0, active(x1)) 53.46/16.28 isNat(mark(x0)) 53.46/16.28 isNat(active(x0)) 53.46/16.28 s(mark(x0)) 53.46/16.28 s(active(x0)) 53.46/16.28 length(mark(x0)) 53.46/16.28 length(active(x0)) 53.46/16.28 53.46/16.28 We have to consider all minimal (P,Q,R)-chains. 53.46/16.28 ---------------------------------------- 53.46/16.28 53.46/16.28 (14) UsableRulesProof (EQUIVALENT) 53.46/16.28 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (15) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 LENGTH(active(X)) -> LENGTH(X) 53.46/16.29 LENGTH(mark(X)) -> LENGTH(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (16) QReductionProof (EQUIVALENT) 53.46/16.29 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.29 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (17) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 LENGTH(active(X)) -> LENGTH(X) 53.46/16.29 LENGTH(mark(X)) -> LENGTH(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (18) QDPSizeChangeProof (EQUIVALENT) 53.46/16.29 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. 53.46/16.29 53.46/16.29 From the DPs we obtained the following set of size-change graphs: 53.46/16.29 *LENGTH(active(X)) -> LENGTH(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 *LENGTH(mark(X)) -> LENGTH(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (19) 53.46/16.29 YES 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (20) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 S(active(X)) -> S(X) 53.46/16.29 S(mark(X)) -> S(X) 53.46/16.29 53.46/16.29 The TRS R consists of the following rules: 53.46/16.29 53.46/16.29 active(zeros) -> mark(cons(0, zeros)) 53.46/16.29 active(U21(tt)) -> mark(tt) 53.46/16.29 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.29 active(U42(tt)) -> mark(tt) 53.46/16.29 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.29 active(U52(tt)) -> mark(tt) 53.46/16.29 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.29 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.29 active(isNat(0)) -> mark(tt) 53.46/16.29 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.29 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.29 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.29 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.29 mark(zeros) -> active(zeros) 53.46/16.29 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.29 mark(0) -> active(0) 53.46/16.29 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.29 mark(tt) -> active(tt) 53.46/16.29 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.29 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.29 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.29 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.29 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.29 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.29 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.29 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.29 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.29 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.29 mark(isNat(X)) -> active(isNat(X)) 53.46/16.29 mark(s(X)) -> active(s(mark(X))) 53.46/16.29 mark(length(X)) -> active(length(mark(X))) 53.46/16.29 mark(nil) -> active(nil) 53.46/16.29 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.29 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.29 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.29 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.29 U11(mark(X)) -> U11(X) 53.46/16.29 U11(active(X)) -> U11(X) 53.46/16.29 U21(mark(X)) -> U21(X) 53.46/16.29 U21(active(X)) -> U21(X) 53.46/16.29 U31(mark(X)) -> U31(X) 53.46/16.29 U31(active(X)) -> U31(X) 53.46/16.29 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.29 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.29 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.29 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.29 U42(mark(X)) -> U42(X) 53.46/16.29 U42(active(X)) -> U42(X) 53.46/16.29 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.29 isNatIList(active(X)) -> isNatIList(X) 53.46/16.29 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.29 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.29 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.29 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.29 U52(mark(X)) -> U52(X) 53.46/16.29 U52(active(X)) -> U52(X) 53.46/16.29 isNatList(mark(X)) -> isNatList(X) 53.46/16.29 isNatList(active(X)) -> isNatList(X) 53.46/16.29 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.29 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.29 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.29 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.29 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.29 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.29 isNat(mark(X)) -> isNat(X) 53.46/16.29 isNat(active(X)) -> isNat(X) 53.46/16.29 s(mark(X)) -> s(X) 53.46/16.29 s(active(X)) -> s(X) 53.46/16.29 length(mark(X)) -> length(X) 53.46/16.29 length(active(X)) -> length(X) 53.46/16.29 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (21) UsableRulesProof (EQUIVALENT) 53.46/16.29 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (22) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 S(active(X)) -> S(X) 53.46/16.29 S(mark(X)) -> S(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (23) QReductionProof (EQUIVALENT) 53.46/16.29 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.29 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (24) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 S(active(X)) -> S(X) 53.46/16.29 S(mark(X)) -> S(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (25) QDPSizeChangeProof (EQUIVALENT) 53.46/16.29 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. 53.46/16.29 53.46/16.29 From the DPs we obtained the following set of size-change graphs: 53.46/16.29 *S(active(X)) -> S(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 *S(mark(X)) -> S(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (26) 53.46/16.29 YES 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (27) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 ISNAT(active(X)) -> ISNAT(X) 53.46/16.29 ISNAT(mark(X)) -> ISNAT(X) 53.46/16.29 53.46/16.29 The TRS R consists of the following rules: 53.46/16.29 53.46/16.29 active(zeros) -> mark(cons(0, zeros)) 53.46/16.29 active(U21(tt)) -> mark(tt) 53.46/16.29 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.29 active(U42(tt)) -> mark(tt) 53.46/16.29 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.29 active(U52(tt)) -> mark(tt) 53.46/16.29 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.29 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.29 active(isNat(0)) -> mark(tt) 53.46/16.29 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.29 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.29 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.29 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.29 mark(zeros) -> active(zeros) 53.46/16.29 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.29 mark(0) -> active(0) 53.46/16.29 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.29 mark(tt) -> active(tt) 53.46/16.29 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.29 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.29 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.29 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.29 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.29 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.29 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.29 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.29 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.29 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.29 mark(isNat(X)) -> active(isNat(X)) 53.46/16.29 mark(s(X)) -> active(s(mark(X))) 53.46/16.29 mark(length(X)) -> active(length(mark(X))) 53.46/16.29 mark(nil) -> active(nil) 53.46/16.29 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.29 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.29 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.29 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.29 U11(mark(X)) -> U11(X) 53.46/16.29 U11(active(X)) -> U11(X) 53.46/16.29 U21(mark(X)) -> U21(X) 53.46/16.29 U21(active(X)) -> U21(X) 53.46/16.29 U31(mark(X)) -> U31(X) 53.46/16.29 U31(active(X)) -> U31(X) 53.46/16.29 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.29 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.29 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.29 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.29 U42(mark(X)) -> U42(X) 53.46/16.29 U42(active(X)) -> U42(X) 53.46/16.29 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.29 isNatIList(active(X)) -> isNatIList(X) 53.46/16.29 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.29 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.29 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.29 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.29 U52(mark(X)) -> U52(X) 53.46/16.29 U52(active(X)) -> U52(X) 53.46/16.29 isNatList(mark(X)) -> isNatList(X) 53.46/16.29 isNatList(active(X)) -> isNatList(X) 53.46/16.29 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.29 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.29 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.29 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.29 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.29 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.29 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.29 isNat(mark(X)) -> isNat(X) 53.46/16.29 isNat(active(X)) -> isNat(X) 53.46/16.29 s(mark(X)) -> s(X) 53.46/16.29 s(active(X)) -> s(X) 53.46/16.29 length(mark(X)) -> length(X) 53.46/16.29 length(active(X)) -> length(X) 53.46/16.29 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (28) UsableRulesProof (EQUIVALENT) 53.46/16.29 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (29) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 ISNAT(active(X)) -> ISNAT(X) 53.46/16.29 ISNAT(mark(X)) -> ISNAT(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (30) QReductionProof (EQUIVALENT) 53.46/16.29 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.29 53.46/16.29 cons(mark(x0), x1) 53.46/16.29 cons(x0, mark(x1)) 53.46/16.29 cons(active(x0), x1) 53.46/16.29 cons(x0, active(x1)) 53.46/16.29 U11(mark(x0)) 53.46/16.29 U11(active(x0)) 53.46/16.29 U21(mark(x0)) 53.46/16.29 U21(active(x0)) 53.46/16.29 U31(mark(x0)) 53.46/16.29 U31(active(x0)) 53.46/16.29 U41(mark(x0), x1) 53.46/16.29 U41(x0, mark(x1)) 53.46/16.29 U41(active(x0), x1) 53.46/16.29 U41(x0, active(x1)) 53.46/16.29 U42(mark(x0)) 53.46/16.29 U42(active(x0)) 53.46/16.29 isNatIList(mark(x0)) 53.46/16.29 isNatIList(active(x0)) 53.46/16.29 U51(mark(x0), x1) 53.46/16.29 U51(x0, mark(x1)) 53.46/16.29 U51(active(x0), x1) 53.46/16.29 U51(x0, active(x1)) 53.46/16.29 U52(mark(x0)) 53.46/16.29 U52(active(x0)) 53.46/16.29 isNatList(mark(x0)) 53.46/16.29 isNatList(active(x0)) 53.46/16.29 U61(mark(x0), x1, x2) 53.46/16.29 U61(x0, mark(x1), x2) 53.46/16.29 U61(x0, x1, mark(x2)) 53.46/16.29 U61(active(x0), x1, x2) 53.46/16.29 U61(x0, active(x1), x2) 53.46/16.29 U61(x0, x1, active(x2)) 53.46/16.29 U62(mark(x0), x1) 53.46/16.29 U62(x0, mark(x1)) 53.46/16.29 U62(active(x0), x1) 53.46/16.29 U62(x0, active(x1)) 53.46/16.29 isNat(mark(x0)) 53.46/16.29 isNat(active(x0)) 53.46/16.29 s(mark(x0)) 53.46/16.29 s(active(x0)) 53.46/16.29 length(mark(x0)) 53.46/16.29 length(active(x0)) 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (31) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 ISNAT(active(X)) -> ISNAT(X) 53.46/16.29 ISNAT(mark(X)) -> ISNAT(X) 53.46/16.29 53.46/16.29 R is empty. 53.46/16.29 The set Q consists of the following terms: 53.46/16.29 53.46/16.29 active(zeros) 53.46/16.29 active(U11(tt)) 53.46/16.29 active(U21(tt)) 53.46/16.29 active(U31(tt)) 53.46/16.29 active(U41(tt, x0)) 53.46/16.29 active(U42(tt)) 53.46/16.29 active(U51(tt, x0)) 53.46/16.29 active(U52(tt)) 53.46/16.29 active(U61(tt, x0, x1)) 53.46/16.29 active(U62(tt, x0)) 53.46/16.29 active(isNat(0)) 53.46/16.29 active(isNat(length(x0))) 53.46/16.29 active(isNat(s(x0))) 53.46/16.29 active(isNatIList(x0)) 53.46/16.29 active(isNatList(nil)) 53.46/16.29 active(isNatList(cons(x0, x1))) 53.46/16.29 active(length(nil)) 53.46/16.29 active(length(cons(x0, x1))) 53.46/16.29 mark(zeros) 53.46/16.29 mark(cons(x0, x1)) 53.46/16.29 mark(0) 53.46/16.29 mark(U11(x0)) 53.46/16.29 mark(tt) 53.46/16.29 mark(U21(x0)) 53.46/16.29 mark(U31(x0)) 53.46/16.29 mark(U41(x0, x1)) 53.46/16.29 mark(U42(x0)) 53.46/16.29 mark(isNatIList(x0)) 53.46/16.29 mark(U51(x0, x1)) 53.46/16.29 mark(U52(x0)) 53.46/16.29 mark(isNatList(x0)) 53.46/16.29 mark(U61(x0, x1, x2)) 53.46/16.29 mark(U62(x0, x1)) 53.46/16.29 mark(isNat(x0)) 53.46/16.29 mark(s(x0)) 53.46/16.29 mark(length(x0)) 53.46/16.29 mark(nil) 53.46/16.29 53.46/16.29 We have to consider all minimal (P,Q,R)-chains. 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (32) QDPSizeChangeProof (EQUIVALENT) 53.46/16.29 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. 53.46/16.29 53.46/16.29 From the DPs we obtained the following set of size-change graphs: 53.46/16.29 *ISNAT(active(X)) -> ISNAT(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 *ISNAT(mark(X)) -> ISNAT(X) 53.46/16.29 The graph contains the following edges 1 > 1 53.46/16.29 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (33) 53.46/16.29 YES 53.46/16.29 53.46/16.29 ---------------------------------------- 53.46/16.29 53.46/16.29 (34) 53.46/16.29 Obligation: 53.46/16.29 Q DP problem: 53.46/16.29 The TRS P consists of the following rules: 53.46/16.29 53.46/16.29 U62^1(X1, mark(X2)) -> U62^1(X1, X2) 53.46/16.29 U62^1(mark(X1), X2) -> U62^1(X1, X2) 53.46/16.29 U62^1(active(X1), X2) -> U62^1(X1, X2) 53.46/16.29 U62^1(X1, active(X2)) -> U62^1(X1, X2) 53.46/16.29 53.46/16.29 The TRS R consists of the following rules: 53.46/16.29 53.46/16.29 active(zeros) -> mark(cons(0, zeros)) 53.46/16.29 active(U21(tt)) -> mark(tt) 53.46/16.29 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.29 active(U42(tt)) -> mark(tt) 53.46/16.29 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.29 active(U52(tt)) -> mark(tt) 53.46/16.29 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.29 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.29 active(isNat(0)) -> mark(tt) 53.46/16.29 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.29 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.29 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.29 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.29 mark(zeros) -> active(zeros) 53.46/16.29 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.29 mark(0) -> active(0) 53.46/16.29 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.29 mark(tt) -> active(tt) 53.46/16.29 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.29 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.29 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.29 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.29 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.29 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.29 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.29 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.30 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.30 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.30 mark(isNat(X)) -> active(isNat(X)) 53.46/16.30 mark(s(X)) -> active(s(mark(X))) 53.46/16.30 mark(length(X)) -> active(length(mark(X))) 53.46/16.30 mark(nil) -> active(nil) 53.46/16.30 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.30 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.30 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.30 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.30 U11(mark(X)) -> U11(X) 53.46/16.30 U11(active(X)) -> U11(X) 53.46/16.30 U21(mark(X)) -> U21(X) 53.46/16.30 U21(active(X)) -> U21(X) 53.46/16.30 U31(mark(X)) -> U31(X) 53.46/16.30 U31(active(X)) -> U31(X) 53.46/16.30 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.30 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.30 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.30 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.30 U42(mark(X)) -> U42(X) 53.46/16.30 U42(active(X)) -> U42(X) 53.46/16.30 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.30 isNatIList(active(X)) -> isNatIList(X) 53.46/16.30 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.30 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.30 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.30 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.30 U52(mark(X)) -> U52(X) 53.46/16.30 U52(active(X)) -> U52(X) 53.46/16.30 isNatList(mark(X)) -> isNatList(X) 53.46/16.30 isNatList(active(X)) -> isNatList(X) 53.46/16.30 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.30 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.30 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.30 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.30 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.30 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.30 isNat(mark(X)) -> isNat(X) 53.46/16.30 isNat(active(X)) -> isNat(X) 53.46/16.30 s(mark(X)) -> s(X) 53.46/16.30 s(active(X)) -> s(X) 53.46/16.30 length(mark(X)) -> length(X) 53.46/16.30 length(active(X)) -> length(X) 53.46/16.30 53.46/16.30 The set Q consists of the following terms: 53.46/16.30 53.46/16.30 active(zeros) 53.46/16.30 active(U11(tt)) 53.46/16.30 active(U21(tt)) 53.46/16.30 active(U31(tt)) 53.46/16.30 active(U41(tt, x0)) 53.46/16.30 active(U42(tt)) 53.46/16.30 active(U51(tt, x0)) 53.46/16.30 active(U52(tt)) 53.46/16.30 active(U61(tt, x0, x1)) 53.46/16.30 active(U62(tt, x0)) 53.46/16.30 active(isNat(0)) 53.46/16.30 active(isNat(length(x0))) 53.46/16.30 active(isNat(s(x0))) 53.46/16.30 active(isNatIList(x0)) 53.46/16.30 active(isNatList(nil)) 53.46/16.30 active(isNatList(cons(x0, x1))) 53.46/16.30 active(length(nil)) 53.46/16.30 active(length(cons(x0, x1))) 53.46/16.30 mark(zeros) 53.46/16.30 mark(cons(x0, x1)) 53.46/16.30 mark(0) 53.46/16.30 mark(U11(x0)) 53.46/16.30 mark(tt) 53.46/16.30 mark(U21(x0)) 53.46/16.30 mark(U31(x0)) 53.46/16.30 mark(U41(x0, x1)) 53.46/16.30 mark(U42(x0)) 53.46/16.30 mark(isNatIList(x0)) 53.46/16.30 mark(U51(x0, x1)) 53.46/16.30 mark(U52(x0)) 53.46/16.30 mark(isNatList(x0)) 53.46/16.30 mark(U61(x0, x1, x2)) 53.46/16.30 mark(U62(x0, x1)) 53.46/16.30 mark(isNat(x0)) 53.46/16.30 mark(s(x0)) 53.46/16.30 mark(length(x0)) 53.46/16.30 mark(nil) 53.46/16.30 cons(mark(x0), x1) 53.46/16.30 cons(x0, mark(x1)) 53.46/16.30 cons(active(x0), x1) 53.46/16.30 cons(x0, active(x1)) 53.46/16.30 U11(mark(x0)) 53.46/16.30 U11(active(x0)) 53.46/16.30 U21(mark(x0)) 53.46/16.30 U21(active(x0)) 53.46/16.30 U31(mark(x0)) 53.46/16.30 U31(active(x0)) 53.46/16.30 U41(mark(x0), x1) 53.46/16.30 U41(x0, mark(x1)) 53.46/16.30 U41(active(x0), x1) 53.46/16.30 U41(x0, active(x1)) 53.46/16.30 U42(mark(x0)) 53.46/16.30 U42(active(x0)) 53.46/16.30 isNatIList(mark(x0)) 53.46/16.30 isNatIList(active(x0)) 53.46/16.30 U51(mark(x0), x1) 53.46/16.30 U51(x0, mark(x1)) 53.46/16.30 U51(active(x0), x1) 53.46/16.30 U51(x0, active(x1)) 53.46/16.30 U52(mark(x0)) 53.46/16.30 U52(active(x0)) 53.46/16.30 isNatList(mark(x0)) 53.46/16.30 isNatList(active(x0)) 53.46/16.30 U61(mark(x0), x1, x2) 53.46/16.30 U61(x0, mark(x1), x2) 53.46/16.30 U61(x0, x1, mark(x2)) 53.46/16.30 U61(active(x0), x1, x2) 53.46/16.30 U61(x0, active(x1), x2) 53.46/16.30 U61(x0, x1, active(x2)) 53.46/16.30 U62(mark(x0), x1) 53.46/16.30 U62(x0, mark(x1)) 53.46/16.30 U62(active(x0), x1) 53.46/16.30 U62(x0, active(x1)) 53.46/16.30 isNat(mark(x0)) 53.46/16.30 isNat(active(x0)) 53.46/16.30 s(mark(x0)) 53.46/16.30 s(active(x0)) 53.46/16.30 length(mark(x0)) 53.46/16.30 length(active(x0)) 53.46/16.30 53.46/16.30 We have to consider all minimal (P,Q,R)-chains. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (35) UsableRulesProof (EQUIVALENT) 53.46/16.30 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (36) 53.46/16.30 Obligation: 53.46/16.30 Q DP problem: 53.46/16.30 The TRS P consists of the following rules: 53.46/16.30 53.46/16.30 U62^1(X1, mark(X2)) -> U62^1(X1, X2) 53.46/16.30 U62^1(mark(X1), X2) -> U62^1(X1, X2) 53.46/16.30 U62^1(active(X1), X2) -> U62^1(X1, X2) 53.46/16.30 U62^1(X1, active(X2)) -> U62^1(X1, X2) 53.46/16.30 53.46/16.30 R is empty. 53.46/16.30 The set Q consists of the following terms: 53.46/16.30 53.46/16.30 active(zeros) 53.46/16.30 active(U11(tt)) 53.46/16.30 active(U21(tt)) 53.46/16.30 active(U31(tt)) 53.46/16.30 active(U41(tt, x0)) 53.46/16.30 active(U42(tt)) 53.46/16.30 active(U51(tt, x0)) 53.46/16.30 active(U52(tt)) 53.46/16.30 active(U61(tt, x0, x1)) 53.46/16.30 active(U62(tt, x0)) 53.46/16.30 active(isNat(0)) 53.46/16.30 active(isNat(length(x0))) 53.46/16.30 active(isNat(s(x0))) 53.46/16.30 active(isNatIList(x0)) 53.46/16.30 active(isNatList(nil)) 53.46/16.30 active(isNatList(cons(x0, x1))) 53.46/16.30 active(length(nil)) 53.46/16.30 active(length(cons(x0, x1))) 53.46/16.30 mark(zeros) 53.46/16.30 mark(cons(x0, x1)) 53.46/16.30 mark(0) 53.46/16.30 mark(U11(x0)) 53.46/16.30 mark(tt) 53.46/16.30 mark(U21(x0)) 53.46/16.30 mark(U31(x0)) 53.46/16.30 mark(U41(x0, x1)) 53.46/16.30 mark(U42(x0)) 53.46/16.30 mark(isNatIList(x0)) 53.46/16.30 mark(U51(x0, x1)) 53.46/16.30 mark(U52(x0)) 53.46/16.30 mark(isNatList(x0)) 53.46/16.30 mark(U61(x0, x1, x2)) 53.46/16.30 mark(U62(x0, x1)) 53.46/16.30 mark(isNat(x0)) 53.46/16.30 mark(s(x0)) 53.46/16.30 mark(length(x0)) 53.46/16.30 mark(nil) 53.46/16.30 cons(mark(x0), x1) 53.46/16.30 cons(x0, mark(x1)) 53.46/16.30 cons(active(x0), x1) 53.46/16.30 cons(x0, active(x1)) 53.46/16.30 U11(mark(x0)) 53.46/16.30 U11(active(x0)) 53.46/16.30 U21(mark(x0)) 53.46/16.30 U21(active(x0)) 53.46/16.30 U31(mark(x0)) 53.46/16.30 U31(active(x0)) 53.46/16.30 U41(mark(x0), x1) 53.46/16.30 U41(x0, mark(x1)) 53.46/16.30 U41(active(x0), x1) 53.46/16.30 U41(x0, active(x1)) 53.46/16.30 U42(mark(x0)) 53.46/16.30 U42(active(x0)) 53.46/16.30 isNatIList(mark(x0)) 53.46/16.30 isNatIList(active(x0)) 53.46/16.30 U51(mark(x0), x1) 53.46/16.30 U51(x0, mark(x1)) 53.46/16.30 U51(active(x0), x1) 53.46/16.30 U51(x0, active(x1)) 53.46/16.30 U52(mark(x0)) 53.46/16.30 U52(active(x0)) 53.46/16.30 isNatList(mark(x0)) 53.46/16.30 isNatList(active(x0)) 53.46/16.30 U61(mark(x0), x1, x2) 53.46/16.30 U61(x0, mark(x1), x2) 53.46/16.30 U61(x0, x1, mark(x2)) 53.46/16.30 U61(active(x0), x1, x2) 53.46/16.30 U61(x0, active(x1), x2) 53.46/16.30 U61(x0, x1, active(x2)) 53.46/16.30 U62(mark(x0), x1) 53.46/16.30 U62(x0, mark(x1)) 53.46/16.30 U62(active(x0), x1) 53.46/16.30 U62(x0, active(x1)) 53.46/16.30 isNat(mark(x0)) 53.46/16.30 isNat(active(x0)) 53.46/16.30 s(mark(x0)) 53.46/16.30 s(active(x0)) 53.46/16.30 length(mark(x0)) 53.46/16.30 length(active(x0)) 53.46/16.30 53.46/16.30 We have to consider all minimal (P,Q,R)-chains. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (37) QReductionProof (EQUIVALENT) 53.46/16.30 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.30 53.46/16.30 cons(mark(x0), x1) 53.46/16.30 cons(x0, mark(x1)) 53.46/16.30 cons(active(x0), x1) 53.46/16.30 cons(x0, active(x1)) 53.46/16.30 U11(mark(x0)) 53.46/16.30 U11(active(x0)) 53.46/16.30 U21(mark(x0)) 53.46/16.30 U21(active(x0)) 53.46/16.30 U31(mark(x0)) 53.46/16.30 U31(active(x0)) 53.46/16.30 U41(mark(x0), x1) 53.46/16.30 U41(x0, mark(x1)) 53.46/16.30 U41(active(x0), x1) 53.46/16.30 U41(x0, active(x1)) 53.46/16.30 U42(mark(x0)) 53.46/16.30 U42(active(x0)) 53.46/16.30 isNatIList(mark(x0)) 53.46/16.30 isNatIList(active(x0)) 53.46/16.30 U51(mark(x0), x1) 53.46/16.30 U51(x0, mark(x1)) 53.46/16.30 U51(active(x0), x1) 53.46/16.30 U51(x0, active(x1)) 53.46/16.30 U52(mark(x0)) 53.46/16.30 U52(active(x0)) 53.46/16.30 isNatList(mark(x0)) 53.46/16.30 isNatList(active(x0)) 53.46/16.30 U61(mark(x0), x1, x2) 53.46/16.30 U61(x0, mark(x1), x2) 53.46/16.30 U61(x0, x1, mark(x2)) 53.46/16.30 U61(active(x0), x1, x2) 53.46/16.30 U61(x0, active(x1), x2) 53.46/16.30 U61(x0, x1, active(x2)) 53.46/16.30 U62(mark(x0), x1) 53.46/16.30 U62(x0, mark(x1)) 53.46/16.30 U62(active(x0), x1) 53.46/16.30 U62(x0, active(x1)) 53.46/16.30 isNat(mark(x0)) 53.46/16.30 isNat(active(x0)) 53.46/16.30 s(mark(x0)) 53.46/16.30 s(active(x0)) 53.46/16.30 length(mark(x0)) 53.46/16.30 length(active(x0)) 53.46/16.30 53.46/16.30 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (38) 53.46/16.30 Obligation: 53.46/16.30 Q DP problem: 53.46/16.30 The TRS P consists of the following rules: 53.46/16.30 53.46/16.30 U62^1(X1, mark(X2)) -> U62^1(X1, X2) 53.46/16.30 U62^1(mark(X1), X2) -> U62^1(X1, X2) 53.46/16.30 U62^1(active(X1), X2) -> U62^1(X1, X2) 53.46/16.30 U62^1(X1, active(X2)) -> U62^1(X1, X2) 53.46/16.30 53.46/16.30 R is empty. 53.46/16.30 The set Q consists of the following terms: 53.46/16.30 53.46/16.30 active(zeros) 53.46/16.30 active(U11(tt)) 53.46/16.30 active(U21(tt)) 53.46/16.30 active(U31(tt)) 53.46/16.30 active(U41(tt, x0)) 53.46/16.30 active(U42(tt)) 53.46/16.30 active(U51(tt, x0)) 53.46/16.30 active(U52(tt)) 53.46/16.30 active(U61(tt, x0, x1)) 53.46/16.30 active(U62(tt, x0)) 53.46/16.30 active(isNat(0)) 53.46/16.30 active(isNat(length(x0))) 53.46/16.30 active(isNat(s(x0))) 53.46/16.30 active(isNatIList(x0)) 53.46/16.30 active(isNatList(nil)) 53.46/16.30 active(isNatList(cons(x0, x1))) 53.46/16.30 active(length(nil)) 53.46/16.30 active(length(cons(x0, x1))) 53.46/16.30 mark(zeros) 53.46/16.30 mark(cons(x0, x1)) 53.46/16.30 mark(0) 53.46/16.30 mark(U11(x0)) 53.46/16.30 mark(tt) 53.46/16.30 mark(U21(x0)) 53.46/16.30 mark(U31(x0)) 53.46/16.30 mark(U41(x0, x1)) 53.46/16.30 mark(U42(x0)) 53.46/16.30 mark(isNatIList(x0)) 53.46/16.30 mark(U51(x0, x1)) 53.46/16.30 mark(U52(x0)) 53.46/16.30 mark(isNatList(x0)) 53.46/16.30 mark(U61(x0, x1, x2)) 53.46/16.30 mark(U62(x0, x1)) 53.46/16.30 mark(isNat(x0)) 53.46/16.30 mark(s(x0)) 53.46/16.30 mark(length(x0)) 53.46/16.30 mark(nil) 53.46/16.30 53.46/16.30 We have to consider all minimal (P,Q,R)-chains. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (39) QDPSizeChangeProof (EQUIVALENT) 53.46/16.30 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. 53.46/16.30 53.46/16.30 From the DPs we obtained the following set of size-change graphs: 53.46/16.30 *U62^1(X1, mark(X2)) -> U62^1(X1, X2) 53.46/16.30 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.30 53.46/16.30 53.46/16.30 *U62^1(mark(X1), X2) -> U62^1(X1, X2) 53.46/16.30 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.30 53.46/16.30 53.46/16.30 *U62^1(active(X1), X2) -> U62^1(X1, X2) 53.46/16.30 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.30 53.46/16.30 53.46/16.30 *U62^1(X1, active(X2)) -> U62^1(X1, X2) 53.46/16.30 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.30 53.46/16.30 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (40) 53.46/16.30 YES 53.46/16.30 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (41) 53.46/16.30 Obligation: 53.46/16.30 Q DP problem: 53.46/16.30 The TRS P consists of the following rules: 53.46/16.30 53.46/16.30 U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) 53.46/16.30 53.46/16.30 The TRS R consists of the following rules: 53.46/16.30 53.46/16.30 active(zeros) -> mark(cons(0, zeros)) 53.46/16.30 active(U21(tt)) -> mark(tt) 53.46/16.30 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.30 active(U42(tt)) -> mark(tt) 53.46/16.30 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.30 active(U52(tt)) -> mark(tt) 53.46/16.30 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.30 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.30 active(isNat(0)) -> mark(tt) 53.46/16.30 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.30 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.30 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.30 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.30 mark(zeros) -> active(zeros) 53.46/16.30 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.30 mark(0) -> active(0) 53.46/16.30 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.30 mark(tt) -> active(tt) 53.46/16.30 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.30 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.30 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.30 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.30 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.30 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.30 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.30 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.30 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.30 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.30 mark(isNat(X)) -> active(isNat(X)) 53.46/16.30 mark(s(X)) -> active(s(mark(X))) 53.46/16.30 mark(length(X)) -> active(length(mark(X))) 53.46/16.30 mark(nil) -> active(nil) 53.46/16.30 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.30 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.30 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.30 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.30 U11(mark(X)) -> U11(X) 53.46/16.30 U11(active(X)) -> U11(X) 53.46/16.30 U21(mark(X)) -> U21(X) 53.46/16.30 U21(active(X)) -> U21(X) 53.46/16.30 U31(mark(X)) -> U31(X) 53.46/16.30 U31(active(X)) -> U31(X) 53.46/16.30 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.30 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.30 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.30 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.30 U42(mark(X)) -> U42(X) 53.46/16.30 U42(active(X)) -> U42(X) 53.46/16.30 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.30 isNatIList(active(X)) -> isNatIList(X) 53.46/16.30 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.30 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.30 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.30 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.30 U52(mark(X)) -> U52(X) 53.46/16.30 U52(active(X)) -> U52(X) 53.46/16.30 isNatList(mark(X)) -> isNatList(X) 53.46/16.30 isNatList(active(X)) -> isNatList(X) 53.46/16.30 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.30 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.30 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.30 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.30 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.30 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.30 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.30 isNat(mark(X)) -> isNat(X) 53.46/16.30 isNat(active(X)) -> isNat(X) 53.46/16.30 s(mark(X)) -> s(X) 53.46/16.30 s(active(X)) -> s(X) 53.46/16.30 length(mark(X)) -> length(X) 53.46/16.30 length(active(X)) -> length(X) 53.46/16.30 53.46/16.30 The set Q consists of the following terms: 53.46/16.30 53.46/16.30 active(zeros) 53.46/16.30 active(U11(tt)) 53.46/16.30 active(U21(tt)) 53.46/16.30 active(U31(tt)) 53.46/16.30 active(U41(tt, x0)) 53.46/16.30 active(U42(tt)) 53.46/16.30 active(U51(tt, x0)) 53.46/16.30 active(U52(tt)) 53.46/16.30 active(U61(tt, x0, x1)) 53.46/16.30 active(U62(tt, x0)) 53.46/16.30 active(isNat(0)) 53.46/16.30 active(isNat(length(x0))) 53.46/16.30 active(isNat(s(x0))) 53.46/16.30 active(isNatIList(x0)) 53.46/16.30 active(isNatList(nil)) 53.46/16.30 active(isNatList(cons(x0, x1))) 53.46/16.30 active(length(nil)) 53.46/16.30 active(length(cons(x0, x1))) 53.46/16.30 mark(zeros) 53.46/16.30 mark(cons(x0, x1)) 53.46/16.30 mark(0) 53.46/16.30 mark(U11(x0)) 53.46/16.30 mark(tt) 53.46/16.30 mark(U21(x0)) 53.46/16.30 mark(U31(x0)) 53.46/16.30 mark(U41(x0, x1)) 53.46/16.30 mark(U42(x0)) 53.46/16.30 mark(isNatIList(x0)) 53.46/16.30 mark(U51(x0, x1)) 53.46/16.30 mark(U52(x0)) 53.46/16.30 mark(isNatList(x0)) 53.46/16.30 mark(U61(x0, x1, x2)) 53.46/16.30 mark(U62(x0, x1)) 53.46/16.30 mark(isNat(x0)) 53.46/16.30 mark(s(x0)) 53.46/16.30 mark(length(x0)) 53.46/16.30 mark(nil) 53.46/16.30 cons(mark(x0), x1) 53.46/16.30 cons(x0, mark(x1)) 53.46/16.30 cons(active(x0), x1) 53.46/16.30 cons(x0, active(x1)) 53.46/16.30 U11(mark(x0)) 53.46/16.30 U11(active(x0)) 53.46/16.30 U21(mark(x0)) 53.46/16.30 U21(active(x0)) 53.46/16.30 U31(mark(x0)) 53.46/16.30 U31(active(x0)) 53.46/16.30 U41(mark(x0), x1) 53.46/16.30 U41(x0, mark(x1)) 53.46/16.30 U41(active(x0), x1) 53.46/16.30 U41(x0, active(x1)) 53.46/16.30 U42(mark(x0)) 53.46/16.30 U42(active(x0)) 53.46/16.30 isNatIList(mark(x0)) 53.46/16.30 isNatIList(active(x0)) 53.46/16.30 U51(mark(x0), x1) 53.46/16.30 U51(x0, mark(x1)) 53.46/16.30 U51(active(x0), x1) 53.46/16.30 U51(x0, active(x1)) 53.46/16.30 U52(mark(x0)) 53.46/16.30 U52(active(x0)) 53.46/16.30 isNatList(mark(x0)) 53.46/16.30 isNatList(active(x0)) 53.46/16.30 U61(mark(x0), x1, x2) 53.46/16.30 U61(x0, mark(x1), x2) 53.46/16.30 U61(x0, x1, mark(x2)) 53.46/16.30 U61(active(x0), x1, x2) 53.46/16.30 U61(x0, active(x1), x2) 53.46/16.30 U61(x0, x1, active(x2)) 53.46/16.30 U62(mark(x0), x1) 53.46/16.30 U62(x0, mark(x1)) 53.46/16.30 U62(active(x0), x1) 53.46/16.30 U62(x0, active(x1)) 53.46/16.30 isNat(mark(x0)) 53.46/16.30 isNat(active(x0)) 53.46/16.30 s(mark(x0)) 53.46/16.30 s(active(x0)) 53.46/16.30 length(mark(x0)) 53.46/16.30 length(active(x0)) 53.46/16.30 53.46/16.30 We have to consider all minimal (P,Q,R)-chains. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (42) UsableRulesProof (EQUIVALENT) 53.46/16.30 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (43) 53.46/16.30 Obligation: 53.46/16.30 Q DP problem: 53.46/16.30 The TRS P consists of the following rules: 53.46/16.30 53.46/16.30 U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.30 U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) 53.46/16.30 53.46/16.30 R is empty. 53.46/16.30 The set Q consists of the following terms: 53.46/16.30 53.46/16.30 active(zeros) 53.46/16.30 active(U11(tt)) 53.46/16.30 active(U21(tt)) 53.46/16.30 active(U31(tt)) 53.46/16.30 active(U41(tt, x0)) 53.46/16.30 active(U42(tt)) 53.46/16.30 active(U51(tt, x0)) 53.46/16.30 active(U52(tt)) 53.46/16.30 active(U61(tt, x0, x1)) 53.46/16.30 active(U62(tt, x0)) 53.46/16.30 active(isNat(0)) 53.46/16.30 active(isNat(length(x0))) 53.46/16.30 active(isNat(s(x0))) 53.46/16.30 active(isNatIList(x0)) 53.46/16.30 active(isNatList(nil)) 53.46/16.30 active(isNatList(cons(x0, x1))) 53.46/16.30 active(length(nil)) 53.46/16.30 active(length(cons(x0, x1))) 53.46/16.30 mark(zeros) 53.46/16.30 mark(cons(x0, x1)) 53.46/16.30 mark(0) 53.46/16.30 mark(U11(x0)) 53.46/16.30 mark(tt) 53.46/16.30 mark(U21(x0)) 53.46/16.30 mark(U31(x0)) 53.46/16.30 mark(U41(x0, x1)) 53.46/16.30 mark(U42(x0)) 53.46/16.30 mark(isNatIList(x0)) 53.46/16.30 mark(U51(x0, x1)) 53.46/16.30 mark(U52(x0)) 53.46/16.30 mark(isNatList(x0)) 53.46/16.30 mark(U61(x0, x1, x2)) 53.46/16.30 mark(U62(x0, x1)) 53.46/16.30 mark(isNat(x0)) 53.46/16.30 mark(s(x0)) 53.46/16.30 mark(length(x0)) 53.46/16.30 mark(nil) 53.46/16.30 cons(mark(x0), x1) 53.46/16.30 cons(x0, mark(x1)) 53.46/16.30 cons(active(x0), x1) 53.46/16.30 cons(x0, active(x1)) 53.46/16.30 U11(mark(x0)) 53.46/16.30 U11(active(x0)) 53.46/16.30 U21(mark(x0)) 53.46/16.30 U21(active(x0)) 53.46/16.30 U31(mark(x0)) 53.46/16.30 U31(active(x0)) 53.46/16.30 U41(mark(x0), x1) 53.46/16.30 U41(x0, mark(x1)) 53.46/16.30 U41(active(x0), x1) 53.46/16.30 U41(x0, active(x1)) 53.46/16.30 U42(mark(x0)) 53.46/16.30 U42(active(x0)) 53.46/16.30 isNatIList(mark(x0)) 53.46/16.30 isNatIList(active(x0)) 53.46/16.30 U51(mark(x0), x1) 53.46/16.30 U51(x0, mark(x1)) 53.46/16.30 U51(active(x0), x1) 53.46/16.30 U51(x0, active(x1)) 53.46/16.30 U52(mark(x0)) 53.46/16.30 U52(active(x0)) 53.46/16.30 isNatList(mark(x0)) 53.46/16.30 isNatList(active(x0)) 53.46/16.30 U61(mark(x0), x1, x2) 53.46/16.30 U61(x0, mark(x1), x2) 53.46/16.30 U61(x0, x1, mark(x2)) 53.46/16.30 U61(active(x0), x1, x2) 53.46/16.30 U61(x0, active(x1), x2) 53.46/16.30 U61(x0, x1, active(x2)) 53.46/16.30 U62(mark(x0), x1) 53.46/16.30 U62(x0, mark(x1)) 53.46/16.30 U62(active(x0), x1) 53.46/16.30 U62(x0, active(x1)) 53.46/16.30 isNat(mark(x0)) 53.46/16.30 isNat(active(x0)) 53.46/16.30 s(mark(x0)) 53.46/16.30 s(active(x0)) 53.46/16.30 length(mark(x0)) 53.46/16.30 length(active(x0)) 53.46/16.30 53.46/16.30 We have to consider all minimal (P,Q,R)-chains. 53.46/16.30 ---------------------------------------- 53.46/16.30 53.46/16.30 (44) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (45) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.31 U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.31 U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) 53.46/16.31 U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.31 U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.31 U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (46) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *U61^1(X1, mark(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 53.46/16.31 53.46/16.31 53.46/16.31 *U61^1(mark(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 53.46/16.31 53.46/16.31 53.46/16.31 *U61^1(X1, X2, mark(X3)) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 53.46/16.31 53.46/16.31 53.46/16.31 *U61^1(active(X1), X2, X3) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3 53.46/16.31 53.46/16.31 53.46/16.31 *U61^1(X1, active(X2), X3) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3 53.46/16.31 53.46/16.31 53.46/16.31 *U61^1(X1, X2, active(X3)) -> U61^1(X1, X2, X3) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (47) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (48) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATLIST(active(X)) -> ISNATLIST(X) 53.46/16.31 ISNATLIST(mark(X)) -> ISNATLIST(X) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (49) UsableRulesProof (EQUIVALENT) 53.46/16.31 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (50) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATLIST(active(X)) -> ISNATLIST(X) 53.46/16.31 ISNATLIST(mark(X)) -> ISNATLIST(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (51) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (52) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATLIST(active(X)) -> ISNATLIST(X) 53.46/16.31 ISNATLIST(mark(X)) -> ISNATLIST(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (53) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *ISNATLIST(active(X)) -> ISNATLIST(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 *ISNATLIST(mark(X)) -> ISNATLIST(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (54) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (55) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U52^1(active(X)) -> U52^1(X) 53.46/16.31 U52^1(mark(X)) -> U52^1(X) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (56) UsableRulesProof (EQUIVALENT) 53.46/16.31 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (57) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U52^1(active(X)) -> U52^1(X) 53.46/16.31 U52^1(mark(X)) -> U52^1(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (58) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (59) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U52^1(active(X)) -> U52^1(X) 53.46/16.31 U52^1(mark(X)) -> U52^1(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (60) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *U52^1(active(X)) -> U52^1(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 *U52^1(mark(X)) -> U52^1(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (61) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (62) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 53.46/16.31 U51^1(mark(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(active(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(X1, active(X2)) -> U51^1(X1, X2) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (63) UsableRulesProof (EQUIVALENT) 53.46/16.31 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (64) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 53.46/16.31 U51^1(mark(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(active(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(X1, active(X2)) -> U51^1(X1, X2) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (65) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (66) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U51^1(X1, mark(X2)) -> U51^1(X1, X2) 53.46/16.31 U51^1(mark(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(active(X1), X2) -> U51^1(X1, X2) 53.46/16.31 U51^1(X1, active(X2)) -> U51^1(X1, X2) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (67) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *U51^1(X1, mark(X2)) -> U51^1(X1, X2) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.31 53.46/16.31 53.46/16.31 *U51^1(mark(X1), X2) -> U51^1(X1, X2) 53.46/16.31 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.31 53.46/16.31 53.46/16.31 *U51^1(active(X1), X2) -> U51^1(X1, X2) 53.46/16.31 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.31 53.46/16.31 53.46/16.31 *U51^1(X1, active(X2)) -> U51^1(X1, X2) 53.46/16.31 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (68) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (69) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATILIST(active(X)) -> ISNATILIST(X) 53.46/16.31 ISNATILIST(mark(X)) -> ISNATILIST(X) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (70) UsableRulesProof (EQUIVALENT) 53.46/16.31 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (71) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATILIST(active(X)) -> ISNATILIST(X) 53.46/16.31 ISNATILIST(mark(X)) -> ISNATILIST(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (72) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (73) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 ISNATILIST(active(X)) -> ISNATILIST(X) 53.46/16.31 ISNATILIST(mark(X)) -> ISNATILIST(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (74) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *ISNATILIST(active(X)) -> ISNATILIST(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 *ISNATILIST(mark(X)) -> ISNATILIST(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (75) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (76) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U42^1(active(X)) -> U42^1(X) 53.46/16.31 U42^1(mark(X)) -> U42^1(X) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (77) UsableRulesProof (EQUIVALENT) 53.46/16.31 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (78) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U42^1(active(X)) -> U42^1(X) 53.46/16.31 U42^1(mark(X)) -> U42^1(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (79) QReductionProof (EQUIVALENT) 53.46/16.31 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.31 53.46/16.31 cons(mark(x0), x1) 53.46/16.31 cons(x0, mark(x1)) 53.46/16.31 cons(active(x0), x1) 53.46/16.31 cons(x0, active(x1)) 53.46/16.31 U11(mark(x0)) 53.46/16.31 U11(active(x0)) 53.46/16.31 U21(mark(x0)) 53.46/16.31 U21(active(x0)) 53.46/16.31 U31(mark(x0)) 53.46/16.31 U31(active(x0)) 53.46/16.31 U41(mark(x0), x1) 53.46/16.31 U41(x0, mark(x1)) 53.46/16.31 U41(active(x0), x1) 53.46/16.31 U41(x0, active(x1)) 53.46/16.31 U42(mark(x0)) 53.46/16.31 U42(active(x0)) 53.46/16.31 isNatIList(mark(x0)) 53.46/16.31 isNatIList(active(x0)) 53.46/16.31 U51(mark(x0), x1) 53.46/16.31 U51(x0, mark(x1)) 53.46/16.31 U51(active(x0), x1) 53.46/16.31 U51(x0, active(x1)) 53.46/16.31 U52(mark(x0)) 53.46/16.31 U52(active(x0)) 53.46/16.31 isNatList(mark(x0)) 53.46/16.31 isNatList(active(x0)) 53.46/16.31 U61(mark(x0), x1, x2) 53.46/16.31 U61(x0, mark(x1), x2) 53.46/16.31 U61(x0, x1, mark(x2)) 53.46/16.31 U61(active(x0), x1, x2) 53.46/16.31 U61(x0, active(x1), x2) 53.46/16.31 U61(x0, x1, active(x2)) 53.46/16.31 U62(mark(x0), x1) 53.46/16.31 U62(x0, mark(x1)) 53.46/16.31 U62(active(x0), x1) 53.46/16.31 U62(x0, active(x1)) 53.46/16.31 isNat(mark(x0)) 53.46/16.31 isNat(active(x0)) 53.46/16.31 s(mark(x0)) 53.46/16.31 s(active(x0)) 53.46/16.31 length(mark(x0)) 53.46/16.31 length(active(x0)) 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (80) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U42^1(active(X)) -> U42^1(X) 53.46/16.31 U42^1(mark(X)) -> U42^1(X) 53.46/16.31 53.46/16.31 R is empty. 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.31 active(length(nil)) 53.46/16.31 active(length(cons(x0, x1))) 53.46/16.31 mark(zeros) 53.46/16.31 mark(cons(x0, x1)) 53.46/16.31 mark(0) 53.46/16.31 mark(U11(x0)) 53.46/16.31 mark(tt) 53.46/16.31 mark(U21(x0)) 53.46/16.31 mark(U31(x0)) 53.46/16.31 mark(U41(x0, x1)) 53.46/16.31 mark(U42(x0)) 53.46/16.31 mark(isNatIList(x0)) 53.46/16.31 mark(U51(x0, x1)) 53.46/16.31 mark(U52(x0)) 53.46/16.31 mark(isNatList(x0)) 53.46/16.31 mark(U61(x0, x1, x2)) 53.46/16.31 mark(U62(x0, x1)) 53.46/16.31 mark(isNat(x0)) 53.46/16.31 mark(s(x0)) 53.46/16.31 mark(length(x0)) 53.46/16.31 mark(nil) 53.46/16.31 53.46/16.31 We have to consider all minimal (P,Q,R)-chains. 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (81) QDPSizeChangeProof (EQUIVALENT) 53.46/16.31 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. 53.46/16.31 53.46/16.31 From the DPs we obtained the following set of size-change graphs: 53.46/16.31 *U42^1(active(X)) -> U42^1(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 *U42^1(mark(X)) -> U42^1(X) 53.46/16.31 The graph contains the following edges 1 > 1 53.46/16.31 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (82) 53.46/16.31 YES 53.46/16.31 53.46/16.31 ---------------------------------------- 53.46/16.31 53.46/16.31 (83) 53.46/16.31 Obligation: 53.46/16.31 Q DP problem: 53.46/16.31 The TRS P consists of the following rules: 53.46/16.31 53.46/16.31 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 53.46/16.31 U41^1(mark(X1), X2) -> U41^1(X1, X2) 53.46/16.31 U41^1(active(X1), X2) -> U41^1(X1, X2) 53.46/16.31 U41^1(X1, active(X2)) -> U41^1(X1, X2) 53.46/16.31 53.46/16.31 The TRS R consists of the following rules: 53.46/16.31 53.46/16.31 active(zeros) -> mark(cons(0, zeros)) 53.46/16.31 active(U21(tt)) -> mark(tt) 53.46/16.31 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.31 active(U42(tt)) -> mark(tt) 53.46/16.31 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.31 active(U52(tt)) -> mark(tt) 53.46/16.31 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.31 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.31 active(isNat(0)) -> mark(tt) 53.46/16.31 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.31 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.31 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.31 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.31 mark(zeros) -> active(zeros) 53.46/16.31 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.31 mark(0) -> active(0) 53.46/16.31 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.31 mark(tt) -> active(tt) 53.46/16.31 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.31 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.31 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.31 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.31 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.31 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.31 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.31 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.31 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.31 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.31 mark(isNat(X)) -> active(isNat(X)) 53.46/16.31 mark(s(X)) -> active(s(mark(X))) 53.46/16.31 mark(length(X)) -> active(length(mark(X))) 53.46/16.31 mark(nil) -> active(nil) 53.46/16.31 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.31 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.31 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.31 U11(mark(X)) -> U11(X) 53.46/16.31 U11(active(X)) -> U11(X) 53.46/16.31 U21(mark(X)) -> U21(X) 53.46/16.31 U21(active(X)) -> U21(X) 53.46/16.31 U31(mark(X)) -> U31(X) 53.46/16.31 U31(active(X)) -> U31(X) 53.46/16.31 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.31 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.31 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.31 U42(mark(X)) -> U42(X) 53.46/16.31 U42(active(X)) -> U42(X) 53.46/16.31 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.31 isNatIList(active(X)) -> isNatIList(X) 53.46/16.31 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.31 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.31 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.31 U52(mark(X)) -> U52(X) 53.46/16.31 U52(active(X)) -> U52(X) 53.46/16.31 isNatList(mark(X)) -> isNatList(X) 53.46/16.31 isNatList(active(X)) -> isNatList(X) 53.46/16.31 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.31 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.31 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.31 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.31 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.31 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.31 isNat(mark(X)) -> isNat(X) 53.46/16.31 isNat(active(X)) -> isNat(X) 53.46/16.31 s(mark(X)) -> s(X) 53.46/16.31 s(active(X)) -> s(X) 53.46/16.31 length(mark(X)) -> length(X) 53.46/16.31 length(active(X)) -> length(X) 53.46/16.31 53.46/16.31 The set Q consists of the following terms: 53.46/16.31 53.46/16.31 active(zeros) 53.46/16.31 active(U11(tt)) 53.46/16.31 active(U21(tt)) 53.46/16.31 active(U31(tt)) 53.46/16.31 active(U41(tt, x0)) 53.46/16.31 active(U42(tt)) 53.46/16.31 active(U51(tt, x0)) 53.46/16.31 active(U52(tt)) 53.46/16.31 active(U61(tt, x0, x1)) 53.46/16.31 active(U62(tt, x0)) 53.46/16.31 active(isNat(0)) 53.46/16.31 active(isNat(length(x0))) 53.46/16.31 active(isNat(s(x0))) 53.46/16.31 active(isNatIList(x0)) 53.46/16.31 active(isNatList(nil)) 53.46/16.31 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (84) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (85) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 53.46/16.32 U41^1(mark(X1), X2) -> U41^1(X1, X2) 53.46/16.32 U41^1(active(X1), X2) -> U41^1(X1, X2) 53.46/16.32 U41^1(X1, active(X2)) -> U41^1(X1, X2) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (86) QReductionProof (EQUIVALENT) 53.46/16.32 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.32 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (87) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U41^1(X1, mark(X2)) -> U41^1(X1, X2) 53.46/16.32 U41^1(mark(X1), X2) -> U41^1(X1, X2) 53.46/16.32 U41^1(active(X1), X2) -> U41^1(X1, X2) 53.46/16.32 U41^1(X1, active(X2)) -> U41^1(X1, X2) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (88) QDPSizeChangeProof (EQUIVALENT) 53.46/16.32 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. 53.46/16.32 53.46/16.32 From the DPs we obtained the following set of size-change graphs: 53.46/16.32 *U41^1(X1, mark(X2)) -> U41^1(X1, X2) 53.46/16.32 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.32 53.46/16.32 53.46/16.32 *U41^1(mark(X1), X2) -> U41^1(X1, X2) 53.46/16.32 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.32 53.46/16.32 53.46/16.32 *U41^1(active(X1), X2) -> U41^1(X1, X2) 53.46/16.32 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.32 53.46/16.32 53.46/16.32 *U41^1(X1, active(X2)) -> U41^1(X1, X2) 53.46/16.32 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (89) 53.46/16.32 YES 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (90) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U31^1(active(X)) -> U31^1(X) 53.46/16.32 U31^1(mark(X)) -> U31^1(X) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U21(mark(X)) -> U21(X) 53.46/16.32 U21(active(X)) -> U21(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.32 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.32 isNatIList(active(X)) -> isNatIList(X) 53.46/16.32 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.32 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 isNatList(mark(X)) -> isNatList(X) 53.46/16.32 isNatList(active(X)) -> isNatList(X) 53.46/16.32 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.32 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.32 isNat(mark(X)) -> isNat(X) 53.46/16.32 isNat(active(X)) -> isNat(X) 53.46/16.32 s(mark(X)) -> s(X) 53.46/16.32 s(active(X)) -> s(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (91) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (92) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U31^1(active(X)) -> U31^1(X) 53.46/16.32 U31^1(mark(X)) -> U31^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (93) QReductionProof (EQUIVALENT) 53.46/16.32 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.32 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (94) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U31^1(active(X)) -> U31^1(X) 53.46/16.32 U31^1(mark(X)) -> U31^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (95) QDPSizeChangeProof (EQUIVALENT) 53.46/16.32 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. 53.46/16.32 53.46/16.32 From the DPs we obtained the following set of size-change graphs: 53.46/16.32 *U31^1(active(X)) -> U31^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 *U31^1(mark(X)) -> U31^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (96) 53.46/16.32 YES 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (97) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U21^1(active(X)) -> U21^1(X) 53.46/16.32 U21^1(mark(X)) -> U21^1(X) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U21(mark(X)) -> U21(X) 53.46/16.32 U21(active(X)) -> U21(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.32 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.32 isNatIList(active(X)) -> isNatIList(X) 53.46/16.32 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.32 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 isNatList(mark(X)) -> isNatList(X) 53.46/16.32 isNatList(active(X)) -> isNatList(X) 53.46/16.32 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.32 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.32 isNat(mark(X)) -> isNat(X) 53.46/16.32 isNat(active(X)) -> isNat(X) 53.46/16.32 s(mark(X)) -> s(X) 53.46/16.32 s(active(X)) -> s(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (98) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (99) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U21^1(active(X)) -> U21^1(X) 53.46/16.32 U21^1(mark(X)) -> U21^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (100) QReductionProof (EQUIVALENT) 53.46/16.32 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.32 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (101) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U21^1(active(X)) -> U21^1(X) 53.46/16.32 U21^1(mark(X)) -> U21^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (102) QDPSizeChangeProof (EQUIVALENT) 53.46/16.32 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. 53.46/16.32 53.46/16.32 From the DPs we obtained the following set of size-change graphs: 53.46/16.32 *U21^1(active(X)) -> U21^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 *U21^1(mark(X)) -> U21^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (103) 53.46/16.32 YES 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (104) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U11^1(active(X)) -> U11^1(X) 53.46/16.32 U11^1(mark(X)) -> U11^1(X) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U21(mark(X)) -> U21(X) 53.46/16.32 U21(active(X)) -> U21(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.32 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.32 isNatIList(active(X)) -> isNatIList(X) 53.46/16.32 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.32 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 isNatList(mark(X)) -> isNatList(X) 53.46/16.32 isNatList(active(X)) -> isNatList(X) 53.46/16.32 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.32 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.32 isNat(mark(X)) -> isNat(X) 53.46/16.32 isNat(active(X)) -> isNat(X) 53.46/16.32 s(mark(X)) -> s(X) 53.46/16.32 s(active(X)) -> s(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (105) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (106) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U11^1(active(X)) -> U11^1(X) 53.46/16.32 U11^1(mark(X)) -> U11^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (107) QReductionProof (EQUIVALENT) 53.46/16.32 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.32 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (108) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 U11^1(active(X)) -> U11^1(X) 53.46/16.32 U11^1(mark(X)) -> U11^1(X) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (109) QDPSizeChangeProof (EQUIVALENT) 53.46/16.32 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. 53.46/16.32 53.46/16.32 From the DPs we obtained the following set of size-change graphs: 53.46/16.32 *U11^1(active(X)) -> U11^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 *U11^1(mark(X)) -> U11^1(X) 53.46/16.32 The graph contains the following edges 1 > 1 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (110) 53.46/16.32 YES 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (111) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 CONS(X1, mark(X2)) -> CONS(X1, X2) 53.46/16.32 CONS(mark(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(active(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(X1, active(X2)) -> CONS(X1, X2) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U21(mark(X)) -> U21(X) 53.46/16.32 U21(active(X)) -> U21(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.32 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.32 isNatIList(active(X)) -> isNatIList(X) 53.46/16.32 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.32 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 isNatList(mark(X)) -> isNatList(X) 53.46/16.32 isNatList(active(X)) -> isNatList(X) 53.46/16.32 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.32 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.32 isNat(mark(X)) -> isNat(X) 53.46/16.32 isNat(active(X)) -> isNat(X) 53.46/16.32 s(mark(X)) -> s(X) 53.46/16.32 s(active(X)) -> s(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (112) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (113) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 CONS(X1, mark(X2)) -> CONS(X1, X2) 53.46/16.32 CONS(mark(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(active(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(X1, active(X2)) -> CONS(X1, X2) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (114) QReductionProof (EQUIVALENT) 53.46/16.32 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.32 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (115) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 CONS(X1, mark(X2)) -> CONS(X1, X2) 53.46/16.32 CONS(mark(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(active(X1), X2) -> CONS(X1, X2) 53.46/16.32 CONS(X1, active(X2)) -> CONS(X1, X2) 53.46/16.32 53.46/16.32 R is empty. 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (116) QDPSizeChangeProof (EQUIVALENT) 53.46/16.32 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. 53.46/16.32 53.46/16.32 From the DPs we obtained the following set of size-change graphs: 53.46/16.32 *CONS(X1, mark(X2)) -> CONS(X1, X2) 53.46/16.32 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.32 53.46/16.32 53.46/16.32 *CONS(mark(X1), X2) -> CONS(X1, X2) 53.46/16.32 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.32 53.46/16.32 53.46/16.32 *CONS(active(X1), X2) -> CONS(X1, X2) 53.46/16.32 The graph contains the following edges 1 > 1, 2 >= 2 53.46/16.32 53.46/16.32 53.46/16.32 *CONS(X1, active(X2)) -> CONS(X1, X2) 53.46/16.32 The graph contains the following edges 1 >= 1, 2 > 2 53.46/16.32 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (117) 53.46/16.32 YES 53.46/16.32 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (118) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.32 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.32 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.32 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.32 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.32 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.32 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.32 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.32 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.32 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.32 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.32 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.32 MARK(zeros) -> ACTIVE(zeros) 53.46/16.32 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.32 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.32 MARK(U11(X)) -> MARK(X) 53.46/16.32 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.32 MARK(U21(X)) -> MARK(X) 53.46/16.32 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.32 MARK(U31(X)) -> MARK(X) 53.46/16.32 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.32 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U42(X)) -> MARK(X) 53.46/16.32 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.32 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.32 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.32 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U52(X)) -> MARK(X) 53.46/16.32 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.32 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.32 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.32 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.32 MARK(s(X)) -> MARK(X) 53.46/16.32 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.32 MARK(length(X)) -> MARK(X) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U21(mark(X)) -> U21(X) 53.46/16.32 U21(active(X)) -> U21(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.32 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.32 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 isNatIList(mark(X)) -> isNatIList(X) 53.46/16.32 isNatIList(active(X)) -> isNatIList(X) 53.46/16.32 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.32 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.32 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 isNatList(mark(X)) -> isNatList(X) 53.46/16.32 isNatList(active(X)) -> isNatList(X) 53.46/16.32 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.32 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.32 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.32 isNat(mark(X)) -> isNat(X) 53.46/16.32 isNat(active(X)) -> isNat(X) 53.46/16.32 s(mark(X)) -> s(X) 53.46/16.32 s(active(X)) -> s(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 53.46/16.32 The set Q consists of the following terms: 53.46/16.32 53.46/16.32 active(zeros) 53.46/16.32 active(U11(tt)) 53.46/16.32 active(U21(tt)) 53.46/16.32 active(U31(tt)) 53.46/16.32 active(U41(tt, x0)) 53.46/16.32 active(U42(tt)) 53.46/16.32 active(U51(tt, x0)) 53.46/16.32 active(U52(tt)) 53.46/16.32 active(U61(tt, x0, x1)) 53.46/16.32 active(U62(tt, x0)) 53.46/16.32 active(isNat(0)) 53.46/16.32 active(isNat(length(x0))) 53.46/16.32 active(isNat(s(x0))) 53.46/16.32 active(isNatIList(x0)) 53.46/16.32 active(isNatList(nil)) 53.46/16.32 active(isNatList(cons(x0, x1))) 53.46/16.32 active(length(nil)) 53.46/16.32 active(length(cons(x0, x1))) 53.46/16.32 mark(zeros) 53.46/16.32 mark(cons(x0, x1)) 53.46/16.32 mark(0) 53.46/16.32 mark(U11(x0)) 53.46/16.32 mark(tt) 53.46/16.32 mark(U21(x0)) 53.46/16.32 mark(U31(x0)) 53.46/16.32 mark(U41(x0, x1)) 53.46/16.32 mark(U42(x0)) 53.46/16.32 mark(isNatIList(x0)) 53.46/16.32 mark(U51(x0, x1)) 53.46/16.32 mark(U52(x0)) 53.46/16.32 mark(isNatList(x0)) 53.46/16.32 mark(U61(x0, x1, x2)) 53.46/16.32 mark(U62(x0, x1)) 53.46/16.32 mark(isNat(x0)) 53.46/16.32 mark(s(x0)) 53.46/16.32 mark(length(x0)) 53.46/16.32 mark(nil) 53.46/16.32 cons(mark(x0), x1) 53.46/16.32 cons(x0, mark(x1)) 53.46/16.32 cons(active(x0), x1) 53.46/16.32 cons(x0, active(x1)) 53.46/16.32 U11(mark(x0)) 53.46/16.32 U11(active(x0)) 53.46/16.32 U21(mark(x0)) 53.46/16.32 U21(active(x0)) 53.46/16.32 U31(mark(x0)) 53.46/16.32 U31(active(x0)) 53.46/16.32 U41(mark(x0), x1) 53.46/16.32 U41(x0, mark(x1)) 53.46/16.32 U41(active(x0), x1) 53.46/16.32 U41(x0, active(x1)) 53.46/16.32 U42(mark(x0)) 53.46/16.32 U42(active(x0)) 53.46/16.32 isNatIList(mark(x0)) 53.46/16.32 isNatIList(active(x0)) 53.46/16.32 U51(mark(x0), x1) 53.46/16.32 U51(x0, mark(x1)) 53.46/16.32 U51(active(x0), x1) 53.46/16.32 U51(x0, active(x1)) 53.46/16.32 U52(mark(x0)) 53.46/16.32 U52(active(x0)) 53.46/16.32 isNatList(mark(x0)) 53.46/16.32 isNatList(active(x0)) 53.46/16.32 U61(mark(x0), x1, x2) 53.46/16.32 U61(x0, mark(x1), x2) 53.46/16.32 U61(x0, x1, mark(x2)) 53.46/16.32 U61(active(x0), x1, x2) 53.46/16.32 U61(x0, active(x1), x2) 53.46/16.32 U61(x0, x1, active(x2)) 53.46/16.32 U62(mark(x0), x1) 53.46/16.32 U62(x0, mark(x1)) 53.46/16.32 U62(active(x0), x1) 53.46/16.32 U62(x0, active(x1)) 53.46/16.32 isNat(mark(x0)) 53.46/16.32 isNat(active(x0)) 53.46/16.32 s(mark(x0)) 53.46/16.32 s(active(x0)) 53.46/16.32 length(mark(x0)) 53.46/16.32 length(active(x0)) 53.46/16.32 53.46/16.32 We have to consider all minimal (P,Q,R)-chains. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (119) UsableRulesProof (EQUIVALENT) 53.46/16.32 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.32 ---------------------------------------- 53.46/16.32 53.46/16.32 (120) 53.46/16.32 Obligation: 53.46/16.32 Q DP problem: 53.46/16.32 The TRS P consists of the following rules: 53.46/16.32 53.46/16.32 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.32 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.32 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.32 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.32 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.32 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.32 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.32 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.32 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.32 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.32 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.32 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.32 MARK(zeros) -> ACTIVE(zeros) 53.46/16.32 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.32 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.32 MARK(U11(X)) -> MARK(X) 53.46/16.32 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.32 MARK(U21(X)) -> MARK(X) 53.46/16.32 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.32 MARK(U31(X)) -> MARK(X) 53.46/16.32 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.32 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U42(X)) -> MARK(X) 53.46/16.32 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.32 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.32 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.32 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(U52(X)) -> MARK(X) 53.46/16.32 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.32 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.32 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.32 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.32 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.32 MARK(s(X)) -> MARK(X) 53.46/16.32 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.32 MARK(length(X)) -> MARK(X) 53.46/16.32 53.46/16.32 The TRS R consists of the following rules: 53.46/16.32 53.46/16.32 mark(zeros) -> active(zeros) 53.46/16.32 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.32 active(zeros) -> mark(cons(0, zeros)) 53.46/16.32 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.32 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.32 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.32 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.32 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.32 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.32 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.32 mark(s(X)) -> active(s(mark(X))) 53.46/16.32 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.32 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.32 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.32 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.32 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.32 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.32 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.32 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.32 mark(0) -> active(0) 53.46/16.32 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.32 mark(tt) -> active(tt) 53.46/16.32 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.32 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.32 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.32 mark(isNat(X)) -> active(isNat(X)) 53.46/16.32 mark(length(X)) -> active(length(mark(X))) 53.46/16.32 mark(nil) -> active(nil) 53.46/16.32 length(active(X)) -> length(X) 53.46/16.32 length(mark(X)) -> length(X) 53.46/16.32 active(U21(tt)) -> mark(tt) 53.46/16.32 active(U42(tt)) -> mark(tt) 53.46/16.32 active(U52(tt)) -> mark(tt) 53.46/16.32 active(isNat(0)) -> mark(tt) 53.46/16.32 U31(active(X)) -> U31(X) 53.46/16.32 U31(mark(X)) -> U31(X) 53.46/16.32 U11(active(X)) -> U11(X) 53.46/16.32 U11(mark(X)) -> U11(X) 53.46/16.32 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.32 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.32 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.32 U42(active(X)) -> U42(X) 53.46/16.32 U42(mark(X)) -> U42(X) 53.46/16.32 U52(active(X)) -> U52(X) 53.46/16.32 U52(mark(X)) -> U52(X) 53.46/16.32 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.32 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.32 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (121) MRRProof (EQUIVALENT) 53.46/16.33 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(U31(X)) -> MARK(X) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = x_1 53.46/16.33 POL(MARK(x_1)) = x_1 53.46/16.33 POL(U11(x_1)) = x_1 53.46/16.33 POL(U21(x_1)) = x_1 53.46/16.33 POL(U31(x_1)) = 2 + x_1 53.46/16.33 POL(U41(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(U42(x_1)) = x_1 53.46/16.33 POL(U51(x_1, x_2)) = x_1 + x_2 53.46/16.33 POL(U52(x_1)) = x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 53.46/16.33 POL(U62(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(isNat(x_1)) = x_1 53.46/16.33 POL(isNatIList(x_1)) = 2*x_1 53.46/16.33 POL(isNatList(x_1)) = x_1 53.46/16.33 POL(length(x_1)) = 2*x_1 53.46/16.33 POL(mark(x_1)) = x_1 53.46/16.33 POL(nil) = 0 53.46/16.33 POL(s(x_1)) = x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 0 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (122) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.33 MARK(U11(X)) -> MARK(X) 53.46/16.33 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 MARK(length(X)) -> MARK(X) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (123) MRRProof (EQUIVALENT) 53.46/16.33 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(U11(X)) -> MARK(X) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = 2*x_1 53.46/16.33 POL(MARK(x_1)) = 2*x_1 53.46/16.33 POL(U11(x_1)) = 2 + x_1 53.46/16.33 POL(U21(x_1)) = x_1 53.46/16.33 POL(U31(x_1)) = 2*x_1 53.46/16.33 POL(U41(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.33 POL(U42(x_1)) = x_1 53.46/16.33 POL(U51(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(U52(x_1)) = 2*x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 53.46/16.33 POL(U62(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(isNat(x_1)) = x_1 53.46/16.33 POL(isNatIList(x_1)) = 2*x_1 53.46/16.33 POL(isNatList(x_1)) = x_1 53.46/16.33 POL(length(x_1)) = 2*x_1 53.46/16.33 POL(mark(x_1)) = x_1 53.46/16.33 POL(nil) = 0 53.46/16.33 POL(s(x_1)) = x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 0 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (124) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.33 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 MARK(length(X)) -> MARK(X) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (125) MRRProof (EQUIVALENT) 53.46/16.33 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(U41(X1, X2)) -> MARK(X1) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = x_1 53.46/16.33 POL(MARK(x_1)) = x_1 53.46/16.33 POL(U11(x_1)) = x_1 53.46/16.33 POL(U21(x_1)) = x_1 53.46/16.33 POL(U31(x_1)) = x_1 53.46/16.33 POL(U41(x_1, x_2)) = 1 + x_1 + 2*x_2 53.46/16.33 POL(U42(x_1)) = x_1 53.46/16.33 POL(U51(x_1, x_2)) = x_1 + x_2 53.46/16.33 POL(U52(x_1)) = x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 2*x_1 + 2*x_2 + 2*x_3 53.46/16.33 POL(U62(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.33 POL(isNat(x_1)) = 2*x_1 53.46/16.33 POL(isNatIList(x_1)) = 1 + 2*x_1 53.46/16.33 POL(isNatList(x_1)) = x_1 53.46/16.33 POL(length(x_1)) = 2*x_1 53.46/16.33 POL(mark(x_1)) = x_1 53.46/16.33 POL(nil) = 0 53.46/16.33 POL(s(x_1)) = x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 0 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (126) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.33 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 MARK(length(X)) -> MARK(X) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (127) MRRProof (EQUIVALENT) 53.46/16.33 By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(U61(X1, X2, X3)) -> MARK(X1) 53.46/16.33 MARK(U62(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(length(X)) -> MARK(X) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = 2*x_1 53.46/16.33 POL(MARK(x_1)) = 2*x_1 53.46/16.33 POL(U11(x_1)) = 2*x_1 53.46/16.33 POL(U21(x_1)) = x_1 53.46/16.33 POL(U31(x_1)) = x_1 53.46/16.33 POL(U41(x_1, x_2)) = 2*x_1 + x_2 53.46/16.33 POL(U42(x_1)) = x_1 53.46/16.33 POL(U51(x_1, x_2)) = x_1 + 2*x_2 53.46/16.33 POL(U52(x_1)) = x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 1 + 2*x_1 + 2*x_2 + 2*x_3 53.46/16.33 POL(U62(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = 2*x_1 + 2*x_2 53.46/16.33 POL(isNat(x_1)) = x_1 53.46/16.33 POL(isNatIList(x_1)) = x_1 53.46/16.33 POL(isNatList(x_1)) = x_1 53.46/16.33 POL(length(x_1)) = 1 + 2*x_1 53.46/16.33 POL(mark(x_1)) = x_1 53.46/16.33 POL(nil) = 0 53.46/16.33 POL(s(x_1)) = x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 0 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (128) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.33 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (129) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.33 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 53.46/16.33 MARK(U42(X)) -> ACTIVE(U42(mark(X))) 53.46/16.33 MARK(U52(X)) -> ACTIVE(U52(mark(X))) 53.46/16.33 MARK(s(X)) -> ACTIVE(s(mark(X))) 53.46/16.33 MARK(U11(X)) -> ACTIVE(U11(mark(X))) 53.46/16.33 MARK(U21(X)) -> ACTIVE(U21(mark(X))) 53.46/16.33 MARK(U31(X)) -> ACTIVE(U31(mark(X))) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = x_1 53.46/16.33 POL(MARK(x_1)) = 1 53.46/16.33 POL(U11(x_1)) = 0 53.46/16.33 POL(U21(x_1)) = 0 53.46/16.33 POL(U31(x_1)) = 0 53.46/16.33 POL(U41(x_1, x_2)) = 1 53.46/16.33 POL(U42(x_1)) = 0 53.46/16.33 POL(U51(x_1, x_2)) = 1 53.46/16.33 POL(U52(x_1)) = 0 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 1 53.46/16.33 POL(U62(x_1, x_2)) = 1 53.46/16.33 POL(active(x_1)) = 0 53.46/16.33 POL(cons(x_1, x_2)) = 0 53.46/16.33 POL(isNat(x_1)) = 1 53.46/16.33 POL(isNatIList(x_1)) = 1 53.46/16.33 POL(isNatList(x_1)) = 1 53.46/16.33 POL(length(x_1)) = 1 53.46/16.33 POL(mark(x_1)) = 0 53.46/16.33 POL(nil) = 0 53.46/16.33 POL(s(x_1)) = 0 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 1 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (130) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (131) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.33 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(zeros) -> ACTIVE(zeros) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = 0 53.46/16.33 POL(MARK(x_1)) = x_1 53.46/16.33 POL(U11(x_1)) = 1 53.46/16.33 POL(U21(x_1)) = x_1 53.46/16.33 POL(U31(x_1)) = 0 53.46/16.33 POL(U41(x_1, x_2)) = x_1 53.46/16.33 POL(U42(x_1)) = 2*x_1 53.46/16.33 POL(U51(x_1, x_2)) = x_1 53.46/16.33 POL(U52(x_1)) = 2*x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 0 53.46/16.33 POL(U62(x_1, x_2)) = 0 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = 2*x_1 53.46/16.33 POL(isNat(x_1)) = 0 53.46/16.33 POL(isNatIList(x_1)) = 0 53.46/16.33 POL(isNatList(x_1)) = 0 53.46/16.33 POL(length(x_1)) = 0 53.46/16.33 POL(mark(x_1)) = 2*x_1 53.46/16.33 POL(nil) = 2 53.46/16.33 POL(s(x_1)) = 2*x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 2 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (132) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 ACTIVE(zeros) -> MARK(cons(0, zeros)) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (133) DependencyGraphProof (EQUIVALENT) 53.46/16.33 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (134) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (135) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.33 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.33 53.46/16.33 Strictly oriented dependency pairs: 53.46/16.33 53.46/16.33 MARK(cons(X1, X2)) -> MARK(X1) 53.46/16.33 53.46/16.33 53.46/16.33 Used ordering: Polynomial interpretation [POLO]: 53.46/16.33 53.46/16.33 POL(0) = 0 53.46/16.33 POL(ACTIVE(x_1)) = 0 53.46/16.33 POL(MARK(x_1)) = x_1 53.46/16.33 POL(U11(x_1)) = x_1 53.46/16.33 POL(U21(x_1)) = 2*x_1 53.46/16.33 POL(U31(x_1)) = 1 53.46/16.33 POL(U41(x_1, x_2)) = 0 53.46/16.33 POL(U42(x_1)) = 2*x_1 53.46/16.33 POL(U51(x_1, x_2)) = 2*x_1 53.46/16.33 POL(U52(x_1)) = x_1 53.46/16.33 POL(U61(x_1, x_2, x_3)) = 0 53.46/16.33 POL(U62(x_1, x_2)) = 0 53.46/16.33 POL(active(x_1)) = x_1 53.46/16.33 POL(cons(x_1, x_2)) = 1 + 2*x_1 53.46/16.33 POL(isNat(x_1)) = 0 53.46/16.33 POL(isNatIList(x_1)) = 0 53.46/16.33 POL(isNatList(x_1)) = 0 53.46/16.33 POL(length(x_1)) = 0 53.46/16.33 POL(mark(x_1)) = 2*x_1 53.46/16.33 POL(nil) = 2 53.46/16.33 POL(s(x_1)) = 2*x_1 53.46/16.33 POL(tt) = 0 53.46/16.33 POL(zeros) = 2 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (136) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.33 length(active(x0)) 53.46/16.33 53.46/16.33 We have to consider all minimal (P,Q,R)-chains. 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (137) QDPOrderProof (EQUIVALENT) 53.46/16.33 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.33 53.46/16.33 53.46/16.33 The following pairs can be oriented strictly and are deleted. 53.46/16.33 53.46/16.33 MARK(U51(X1, X2)) -> MARK(X1) 53.46/16.33 The remaining pairs can at least be oriented weakly. 53.46/16.33 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 53.46/16.33 53.46/16.33 POL( ACTIVE_1(x_1) ) = x_1 + 2 53.46/16.33 POL( U41_2(x_1, x_2) ) = max{0, -2} 53.46/16.33 POL( U51_2(x_1, x_2) ) = x_1 + 2 53.46/16.33 POL( U61_3(x_1, ..., x_3) ) = max{0, -2} 53.46/16.33 POL( U62_2(x_1, x_2) ) = max{0, -2} 53.46/16.33 POL( length_1(x_1) ) = 0 53.46/16.33 POL( mark_1(x_1) ) = x_1 53.46/16.33 POL( zeros ) = 0 53.46/16.33 POL( active_1(x_1) ) = x_1 53.46/16.33 POL( cons_2(x_1, x_2) ) = max{0, -2} 53.46/16.33 POL( 0 ) = 2 53.46/16.33 POL( tt ) = 0 53.46/16.33 POL( U42_1(x_1) ) = x_1 53.46/16.33 POL( isNatIList_1(x_1) ) = 0 53.46/16.33 POL( U52_1(x_1) ) = x_1 53.46/16.33 POL( isNatList_1(x_1) ) = 2 53.46/16.33 POL( isNat_1(x_1) ) = 0 53.46/16.33 POL( s_1(x_1) ) = 2x_1 53.46/16.33 POL( U21_1(x_1) ) = 2x_1 53.46/16.33 POL( U11_1(x_1) ) = 2 53.46/16.33 POL( U31_1(x_1) ) = 0 53.46/16.33 POL( nil ) = 0 53.46/16.33 POL( MARK_1(x_1) ) = x_1 + 2 53.46/16.33 53.46/16.33 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 53.46/16.33 53.46/16.33 ---------------------------------------- 53.46/16.33 53.46/16.33 (138) 53.46/16.33 Obligation: 53.46/16.33 Q DP problem: 53.46/16.33 The TRS P consists of the following rules: 53.46/16.33 53.46/16.33 MARK(U42(X)) -> MARK(X) 53.46/16.33 MARK(U21(X)) -> MARK(X) 53.46/16.33 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.33 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.33 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.33 MARK(U52(X)) -> MARK(X) 53.46/16.33 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.33 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.33 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.33 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.33 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.33 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.33 MARK(s(X)) -> MARK(X) 53.46/16.33 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.33 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.33 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.33 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.33 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.33 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.33 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.33 53.46/16.33 The TRS R consists of the following rules: 53.46/16.33 53.46/16.33 mark(zeros) -> active(zeros) 53.46/16.33 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.33 active(zeros) -> mark(cons(0, zeros)) 53.46/16.33 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.33 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.33 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.33 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.33 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.33 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.33 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.33 mark(s(X)) -> active(s(mark(X))) 53.46/16.33 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.33 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.33 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.33 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.33 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.33 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.33 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.33 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.33 mark(0) -> active(0) 53.46/16.33 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.33 mark(tt) -> active(tt) 53.46/16.33 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.33 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.33 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.33 mark(isNat(X)) -> active(isNat(X)) 53.46/16.33 mark(length(X)) -> active(length(mark(X))) 53.46/16.33 mark(nil) -> active(nil) 53.46/16.33 length(active(X)) -> length(X) 53.46/16.33 length(mark(X)) -> length(X) 53.46/16.33 active(U21(tt)) -> mark(tt) 53.46/16.33 active(U42(tt)) -> mark(tt) 53.46/16.33 active(U52(tt)) -> mark(tt) 53.46/16.33 active(isNat(0)) -> mark(tt) 53.46/16.33 U31(active(X)) -> U31(X) 53.46/16.33 U31(mark(X)) -> U31(X) 53.46/16.33 U11(active(X)) -> U11(X) 53.46/16.33 U11(mark(X)) -> U11(X) 53.46/16.33 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.33 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.33 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.33 U42(active(X)) -> U42(X) 53.46/16.33 U42(mark(X)) -> U42(X) 53.46/16.33 U52(active(X)) -> U52(X) 53.46/16.33 U52(mark(X)) -> U52(X) 53.46/16.33 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.33 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.33 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.33 s(active(X)) -> s(X) 53.46/16.33 s(mark(X)) -> s(X) 53.46/16.33 U21(active(X)) -> U21(X) 53.46/16.33 U21(mark(X)) -> U21(X) 53.46/16.33 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.33 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.33 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.33 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.33 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.33 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.33 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.33 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.33 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.33 53.46/16.33 The set Q consists of the following terms: 53.46/16.33 53.46/16.33 active(zeros) 53.46/16.33 active(U11(tt)) 53.46/16.33 active(U21(tt)) 53.46/16.33 active(U31(tt)) 53.46/16.33 active(U41(tt, x0)) 53.46/16.33 active(U42(tt)) 53.46/16.33 active(U51(tt, x0)) 53.46/16.33 active(U52(tt)) 53.46/16.33 active(U61(tt, x0, x1)) 53.46/16.33 active(U62(tt, x0)) 53.46/16.33 active(isNat(0)) 53.46/16.33 active(isNat(length(x0))) 53.46/16.33 active(isNat(s(x0))) 53.46/16.33 active(isNatIList(x0)) 53.46/16.33 active(isNatList(nil)) 53.46/16.33 active(isNatList(cons(x0, x1))) 53.46/16.33 active(length(nil)) 53.46/16.33 active(length(cons(x0, x1))) 53.46/16.33 mark(zeros) 53.46/16.33 mark(cons(x0, x1)) 53.46/16.33 mark(0) 53.46/16.33 mark(U11(x0)) 53.46/16.33 mark(tt) 53.46/16.33 mark(U21(x0)) 53.46/16.33 mark(U31(x0)) 53.46/16.33 mark(U41(x0, x1)) 53.46/16.33 mark(U42(x0)) 53.46/16.33 mark(isNatIList(x0)) 53.46/16.33 mark(U51(x0, x1)) 53.46/16.33 mark(U52(x0)) 53.46/16.33 mark(isNatList(x0)) 53.46/16.33 mark(U61(x0, x1, x2)) 53.46/16.33 mark(U62(x0, x1)) 53.46/16.33 mark(isNat(x0)) 53.46/16.33 mark(s(x0)) 53.46/16.33 mark(length(x0)) 53.46/16.33 mark(nil) 53.46/16.33 cons(mark(x0), x1) 53.46/16.33 cons(x0, mark(x1)) 53.46/16.33 cons(active(x0), x1) 53.46/16.33 cons(x0, active(x1)) 53.46/16.33 U11(mark(x0)) 53.46/16.33 U11(active(x0)) 53.46/16.33 U21(mark(x0)) 53.46/16.33 U21(active(x0)) 53.46/16.33 U31(mark(x0)) 53.46/16.33 U31(active(x0)) 53.46/16.33 U41(mark(x0), x1) 53.46/16.33 U41(x0, mark(x1)) 53.46/16.33 U41(active(x0), x1) 53.46/16.33 U41(x0, active(x1)) 53.46/16.33 U42(mark(x0)) 53.46/16.33 U42(active(x0)) 53.46/16.33 isNatIList(mark(x0)) 53.46/16.33 isNatIList(active(x0)) 53.46/16.33 U51(mark(x0), x1) 53.46/16.33 U51(x0, mark(x1)) 53.46/16.33 U51(active(x0), x1) 53.46/16.33 U51(x0, active(x1)) 53.46/16.33 U52(mark(x0)) 53.46/16.33 U52(active(x0)) 53.46/16.33 isNatList(mark(x0)) 53.46/16.33 isNatList(active(x0)) 53.46/16.33 U61(mark(x0), x1, x2) 53.46/16.33 U61(x0, mark(x1), x2) 53.46/16.33 U61(x0, x1, mark(x2)) 53.46/16.33 U61(active(x0), x1, x2) 53.46/16.33 U61(x0, active(x1), x2) 53.46/16.33 U61(x0, x1, active(x2)) 53.46/16.33 U62(mark(x0), x1) 53.46/16.33 U62(x0, mark(x1)) 53.46/16.33 U62(active(x0), x1) 53.46/16.33 U62(x0, active(x1)) 53.46/16.33 isNat(mark(x0)) 53.46/16.33 isNat(active(x0)) 53.46/16.33 s(mark(x0)) 53.46/16.33 s(active(x0)) 53.46/16.33 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (139) QDPOrderProof (EQUIVALENT) 53.46/16.34 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.34 53.46/16.34 53.46/16.34 The following pairs can be oriented strictly and are deleted. 53.46/16.34 53.46/16.34 ACTIVE(isNat(s(V1))) -> MARK(U21(isNat(V1))) 53.46/16.34 The remaining pairs can at least be oriented weakly. 53.46/16.34 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 53.46/16.34 53.46/16.34 POL( ACTIVE_1(x_1) ) = max{0, x_1 - 2} 53.46/16.34 POL( U41_2(x_1, x_2) ) = 2 53.46/16.34 POL( U51_2(x_1, x_2) ) = 2 53.46/16.34 POL( U61_3(x_1, ..., x_3) ) = 0 53.46/16.34 POL( U62_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( length_1(x_1) ) = 0 53.46/16.34 POL( mark_1(x_1) ) = max{0, -2} 53.46/16.34 POL( zeros ) = 0 53.46/16.34 POL( active_1(x_1) ) = 1 53.46/16.34 POL( cons_2(x_1, x_2) ) = max{0, x_1 - 2} 53.46/16.34 POL( 0 ) = 0 53.46/16.34 POL( tt ) = 0 53.46/16.34 POL( U42_1(x_1) ) = 2x_1 + 2 53.46/16.34 POL( isNatIList_1(x_1) ) = 0 53.46/16.34 POL( U52_1(x_1) ) = x_1 + 2 53.46/16.34 POL( isNatList_1(x_1) ) = 0 53.46/16.34 POL( isNat_1(x_1) ) = 2x_1 + 2 53.46/16.34 POL( s_1(x_1) ) = x_1 + 2 53.46/16.34 POL( U21_1(x_1) ) = x_1 + 2 53.46/16.34 POL( U11_1(x_1) ) = max{0, x_1 - 2} 53.46/16.34 POL( U31_1(x_1) ) = 2 53.46/16.34 POL( nil ) = 0 53.46/16.34 POL( MARK_1(x_1) ) = max{0, x_1 - 2} 53.46/16.34 53.46/16.34 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.34 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (140) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U21(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.34 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.34 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.34 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.34 MARK(isNat(X)) -> ACTIVE(isNat(X)) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (141) DependencyGraphProof (EQUIVALENT) 53.46/16.34 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (142) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U21(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.34 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.34 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.34 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (143) QDPOrderProof (EQUIVALENT) 53.46/16.34 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.34 53.46/16.34 53.46/16.34 The following pairs can be oriented strictly and are deleted. 53.46/16.34 53.46/16.34 MARK(U21(X)) -> MARK(X) 53.46/16.34 The remaining pairs can at least be oriented weakly. 53.46/16.34 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 53.46/16.34 53.46/16.34 POL( ACTIVE_1(x_1) ) = max{0, -2} 53.46/16.34 POL( U41_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( U51_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( U61_3(x_1, ..., x_3) ) = max{0, -2} 53.46/16.34 POL( U62_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( length_1(x_1) ) = 0 53.46/16.34 POL( mark_1(x_1) ) = 1 53.46/16.34 POL( zeros ) = 0 53.46/16.34 POL( active_1(x_1) ) = 2 53.46/16.34 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 - 2} 53.46/16.34 POL( 0 ) = 0 53.46/16.34 POL( tt ) = 0 53.46/16.34 POL( U42_1(x_1) ) = x_1 + 1 53.46/16.34 POL( isNatIList_1(x_1) ) = 0 53.46/16.34 POL( U52_1(x_1) ) = x_1 + 1 53.46/16.34 POL( isNatList_1(x_1) ) = 0 53.46/16.34 POL( isNat_1(x_1) ) = 0 53.46/16.34 POL( s_1(x_1) ) = x_1 + 1 53.46/16.34 POL( U21_1(x_1) ) = x_1 + 2 53.46/16.34 POL( U11_1(x_1) ) = x_1 + 2 53.46/16.34 POL( U31_1(x_1) ) = max{0, -2} 53.46/16.34 POL( nil ) = 0 53.46/16.34 POL( MARK_1(x_1) ) = max{0, x_1 - 1} 53.46/16.34 53.46/16.34 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.34 none 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (144) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.34 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.34 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.34 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (145) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.34 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.34 53.46/16.34 Strictly oriented dependency pairs: 53.46/16.34 53.46/16.34 ACTIVE(U61(tt, L, N)) -> MARK(U62(isNat(N), L)) 53.46/16.34 ACTIVE(U62(tt, L)) -> MARK(s(length(L))) 53.46/16.34 53.46/16.34 53.46/16.34 Used ordering: Polynomial interpretation [POLO]: 53.46/16.34 53.46/16.34 POL(0) = 0 53.46/16.34 POL(ACTIVE(x_1)) = x_1 53.46/16.34 POL(MARK(x_1)) = x_1 53.46/16.34 POL(U11(x_1)) = 0 53.46/16.34 POL(U21(x_1)) = 2 53.46/16.34 POL(U31(x_1)) = 0 53.46/16.34 POL(U41(x_1, x_2)) = 0 53.46/16.34 POL(U42(x_1)) = 2*x_1 53.46/16.34 POL(U51(x_1, x_2)) = 0 53.46/16.34 POL(U52(x_1)) = 2*x_1 53.46/16.34 POL(U61(x_1, x_2, x_3)) = 2*x_1 53.46/16.34 POL(U62(x_1, x_2)) = 1 53.46/16.34 POL(active(x_1)) = x_1 53.46/16.34 POL(cons(x_1, x_2)) = 0 53.46/16.34 POL(isNat(x_1)) = 2 53.46/16.34 POL(isNatIList(x_1)) = 0 53.46/16.34 POL(isNatList(x_1)) = 0 53.46/16.34 POL(length(x_1)) = 0 53.46/16.34 POL(mark(x_1)) = x_1 53.46/16.34 POL(nil) = 0 53.46/16.34 POL(s(x_1)) = 2*x_1 53.46/16.34 POL(tt) = 2 53.46/16.34 POL(zeros) = 0 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (146) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.34 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (147) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.34 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.34 53.46/16.34 Strictly oriented dependency pairs: 53.46/16.34 53.46/16.34 MARK(U61(X1, X2, X3)) -> ACTIVE(U61(mark(X1), X2, X3)) 53.46/16.34 MARK(U62(X1, X2)) -> ACTIVE(U62(mark(X1), X2)) 53.46/16.34 53.46/16.34 53.46/16.34 Used ordering: Polynomial interpretation [POLO]: 53.46/16.34 53.46/16.34 POL(0) = 0 53.46/16.34 POL(ACTIVE(x_1)) = x_1 53.46/16.34 POL(MARK(x_1)) = 1 53.46/16.34 POL(U11(x_1)) = 0 53.46/16.34 POL(U21(x_1)) = 0 53.46/16.34 POL(U31(x_1)) = 0 53.46/16.34 POL(U41(x_1, x_2)) = 1 53.46/16.34 POL(U42(x_1)) = 0 53.46/16.34 POL(U51(x_1, x_2)) = 1 53.46/16.34 POL(U52(x_1)) = 0 53.46/16.34 POL(U61(x_1, x_2, x_3)) = 0 53.46/16.34 POL(U62(x_1, x_2)) = 0 53.46/16.34 POL(active(x_1)) = 0 53.46/16.34 POL(cons(x_1, x_2)) = 0 53.46/16.34 POL(isNat(x_1)) = 0 53.46/16.34 POL(isNatIList(x_1)) = 1 53.46/16.34 POL(isNatList(x_1)) = 1 53.46/16.34 POL(length(x_1)) = 1 53.46/16.34 POL(mark(x_1)) = 0 53.46/16.34 POL(nil) = 0 53.46/16.34 POL(s(x_1)) = 0 53.46/16.34 POL(tt) = 0 53.46/16.34 POL(zeros) = 0 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (148) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 ACTIVE(length(cons(N, L))) -> MARK(U61(isNatList(L), L, N)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (149) DependencyGraphProof (EQUIVALENT) 53.46/16.34 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (150) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (151) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.34 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.34 53.46/16.34 Strictly oriented dependency pairs: 53.46/16.34 53.46/16.34 MARK(length(X)) -> ACTIVE(length(mark(X))) 53.46/16.34 53.46/16.34 53.46/16.34 Used ordering: Polynomial interpretation [POLO]: 53.46/16.34 53.46/16.34 POL(0) = 0 53.46/16.34 POL(ACTIVE(x_1)) = 2*x_1 53.46/16.34 POL(MARK(x_1)) = 2 53.46/16.34 POL(U11(x_1)) = 0 53.46/16.34 POL(U21(x_1)) = 0 53.46/16.34 POL(U31(x_1)) = 0 53.46/16.34 POL(U41(x_1, x_2)) = 1 53.46/16.34 POL(U42(x_1)) = 0 53.46/16.34 POL(U51(x_1, x_2)) = 1 53.46/16.34 POL(U52(x_1)) = 0 53.46/16.34 POL(U61(x_1, x_2, x_3)) = 0 53.46/16.34 POL(U62(x_1, x_2)) = 0 53.46/16.34 POL(active(x_1)) = 0 53.46/16.34 POL(cons(x_1, x_2)) = 0 53.46/16.34 POL(isNat(x_1)) = 0 53.46/16.34 POL(isNatIList(x_1)) = 1 53.46/16.34 POL(isNatList(x_1)) = 1 53.46/16.34 POL(length(x_1)) = 0 53.46/16.34 POL(mark(x_1)) = 0 53.46/16.34 POL(nil) = 0 53.46/16.34 POL(s(x_1)) = 0 53.46/16.34 POL(tt) = 0 53.46/16.34 POL(zeros) = 0 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (152) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (153) QDPQMonotonicMRRProof (EQUIVALENT) 53.46/16.34 By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain. 53.46/16.34 53.46/16.34 Strictly oriented dependency pairs: 53.46/16.34 53.46/16.34 MARK(s(X)) -> MARK(X) 53.46/16.34 53.46/16.34 53.46/16.34 Used ordering: Polynomial interpretation [POLO]: 53.46/16.34 53.46/16.34 POL(0) = 0 53.46/16.34 POL(ACTIVE(x_1)) = 0 53.46/16.34 POL(MARK(x_1)) = x_1 53.46/16.34 POL(U11(x_1)) = 0 53.46/16.34 POL(U21(x_1)) = 2 53.46/16.34 POL(U31(x_1)) = 0 53.46/16.34 POL(U41(x_1, x_2)) = 0 53.46/16.34 POL(U42(x_1)) = 2*x_1 53.46/16.34 POL(U51(x_1, x_2)) = 0 53.46/16.34 POL(U52(x_1)) = 2*x_1 53.46/16.34 POL(U61(x_1, x_2, x_3)) = x_1 53.46/16.34 POL(U62(x_1, x_2)) = 1 53.46/16.34 POL(active(x_1)) = x_1 53.46/16.34 POL(cons(x_1, x_2)) = 0 53.46/16.34 POL(isNat(x_1)) = 2 53.46/16.34 POL(isNatIList(x_1)) = 0 53.46/16.34 POL(isNatList(x_1)) = 0 53.46/16.34 POL(length(x_1)) = 0 53.46/16.34 POL(mark(x_1)) = x_1 53.46/16.34 POL(nil) = 0 53.46/16.34 POL(s(x_1)) = 1 + 2*x_1 53.46/16.34 POL(tt) = 1 53.46/16.34 POL(zeros) = 0 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (154) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (155) QDPOrderProof (EQUIVALENT) 53.46/16.34 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.34 53.46/16.34 53.46/16.34 The following pairs can be oriented strictly and are deleted. 53.46/16.34 53.46/16.34 ACTIVE(isNatList(cons(V1, V2))) -> MARK(U51(isNat(V1), V2)) 53.46/16.34 The remaining pairs can at least be oriented weakly. 53.46/16.34 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 53.46/16.34 53.46/16.34 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 2} 53.46/16.34 POL( U41_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( U51_2(x_1, x_2) ) = x_2 + 2 53.46/16.34 POL( mark_1(x_1) ) = 2x_1 + 2 53.46/16.34 POL( zeros ) = 0 53.46/16.34 POL( active_1(x_1) ) = x_1 53.46/16.34 POL( cons_2(x_1, x_2) ) = x_1 + x_2 + 2 53.46/16.34 POL( 0 ) = 0 53.46/16.34 POL( tt ) = 0 53.46/16.34 POL( U42_1(x_1) ) = x_1 + 1 53.46/16.34 POL( isNatIList_1(x_1) ) = 0 53.46/16.34 POL( U52_1(x_1) ) = x_1 + 1 53.46/16.34 POL( isNatList_1(x_1) ) = x_1 + 1 53.46/16.34 POL( U61_3(x_1, ..., x_3) ) = 2 53.46/16.34 POL( U62_2(x_1, x_2) ) = 2x_1 + 2 53.46/16.34 POL( isNat_1(x_1) ) = 0 53.46/16.34 POL( s_1(x_1) ) = x_1 + 2 53.46/16.34 POL( length_1(x_1) ) = 2 53.46/16.34 POL( U21_1(x_1) ) = 1 53.46/16.34 POL( U11_1(x_1) ) = 2 53.46/16.34 POL( U31_1(x_1) ) = 1 53.46/16.34 POL( nil ) = 2 53.46/16.34 POL( MARK_1(x_1) ) = max{0, 2x_1 - 2} 53.46/16.34 53.46/16.34 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.34 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (156) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 MARK(isNatList(X)) -> ACTIVE(isNatList(X)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (157) DependencyGraphProof (EQUIVALENT) 53.46/16.34 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (158) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.34 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.34 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.34 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.34 s(active(X)) -> s(X) 53.46/16.34 s(mark(X)) -> s(X) 53.46/16.34 U21(active(X)) -> U21(X) 53.46/16.34 U21(mark(X)) -> U21(X) 53.46/16.34 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.34 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.34 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.34 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.34 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.34 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.34 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.34 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.34 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.34 53.46/16.34 The set Q consists of the following terms: 53.46/16.34 53.46/16.34 active(zeros) 53.46/16.34 active(U11(tt)) 53.46/16.34 active(U21(tt)) 53.46/16.34 active(U31(tt)) 53.46/16.34 active(U41(tt, x0)) 53.46/16.34 active(U42(tt)) 53.46/16.34 active(U51(tt, x0)) 53.46/16.34 active(U52(tt)) 53.46/16.34 active(U61(tt, x0, x1)) 53.46/16.34 active(U62(tt, x0)) 53.46/16.34 active(isNat(0)) 53.46/16.34 active(isNat(length(x0))) 53.46/16.34 active(isNat(s(x0))) 53.46/16.34 active(isNatIList(x0)) 53.46/16.34 active(isNatList(nil)) 53.46/16.34 active(isNatList(cons(x0, x1))) 53.46/16.34 active(length(nil)) 53.46/16.34 active(length(cons(x0, x1))) 53.46/16.34 mark(zeros) 53.46/16.34 mark(cons(x0, x1)) 53.46/16.34 mark(0) 53.46/16.34 mark(U11(x0)) 53.46/16.34 mark(tt) 53.46/16.34 mark(U21(x0)) 53.46/16.34 mark(U31(x0)) 53.46/16.34 mark(U41(x0, x1)) 53.46/16.34 mark(U42(x0)) 53.46/16.34 mark(isNatIList(x0)) 53.46/16.34 mark(U51(x0, x1)) 53.46/16.34 mark(U52(x0)) 53.46/16.34 mark(isNatList(x0)) 53.46/16.34 mark(U61(x0, x1, x2)) 53.46/16.34 mark(U62(x0, x1)) 53.46/16.34 mark(isNat(x0)) 53.46/16.34 mark(s(x0)) 53.46/16.34 mark(length(x0)) 53.46/16.34 mark(nil) 53.46/16.34 cons(mark(x0), x1) 53.46/16.34 cons(x0, mark(x1)) 53.46/16.34 cons(active(x0), x1) 53.46/16.34 cons(x0, active(x1)) 53.46/16.34 U11(mark(x0)) 53.46/16.34 U11(active(x0)) 53.46/16.34 U21(mark(x0)) 53.46/16.34 U21(active(x0)) 53.46/16.34 U31(mark(x0)) 53.46/16.34 U31(active(x0)) 53.46/16.34 U41(mark(x0), x1) 53.46/16.34 U41(x0, mark(x1)) 53.46/16.34 U41(active(x0), x1) 53.46/16.34 U41(x0, active(x1)) 53.46/16.34 U42(mark(x0)) 53.46/16.34 U42(active(x0)) 53.46/16.34 isNatIList(mark(x0)) 53.46/16.34 isNatIList(active(x0)) 53.46/16.34 U51(mark(x0), x1) 53.46/16.34 U51(x0, mark(x1)) 53.46/16.34 U51(active(x0), x1) 53.46/16.34 U51(x0, active(x1)) 53.46/16.34 U52(mark(x0)) 53.46/16.34 U52(active(x0)) 53.46/16.34 isNatList(mark(x0)) 53.46/16.34 isNatList(active(x0)) 53.46/16.34 U61(mark(x0), x1, x2) 53.46/16.34 U61(x0, mark(x1), x2) 53.46/16.34 U61(x0, x1, mark(x2)) 53.46/16.34 U61(active(x0), x1, x2) 53.46/16.34 U61(x0, active(x1), x2) 53.46/16.34 U61(x0, x1, active(x2)) 53.46/16.34 U62(mark(x0), x1) 53.46/16.34 U62(x0, mark(x1)) 53.46/16.34 U62(active(x0), x1) 53.46/16.34 U62(x0, active(x1)) 53.46/16.34 isNat(mark(x0)) 53.46/16.34 isNat(active(x0)) 53.46/16.34 s(mark(x0)) 53.46/16.34 s(active(x0)) 53.46/16.34 length(mark(x0)) 53.46/16.34 length(active(x0)) 53.46/16.34 53.46/16.34 We have to consider all minimal (P,Q,R)-chains. 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (159) QDPOrderProof (EQUIVALENT) 53.46/16.34 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.34 53.46/16.34 53.46/16.34 The following pairs can be oriented strictly and are deleted. 53.46/16.34 53.46/16.34 MARK(U51(X1, X2)) -> ACTIVE(U51(mark(X1), X2)) 53.46/16.34 The remaining pairs can at least be oriented weakly. 53.46/16.34 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 53.46/16.34 53.46/16.34 POL( ACTIVE_1(x_1) ) = max{0, -2} 53.46/16.34 POL( U41_2(x_1, x_2) ) = max{0, -2} 53.46/16.34 POL( U51_2(x_1, x_2) ) = x_2 + 2 53.46/16.34 POL( mark_1(x_1) ) = 2 53.46/16.34 POL( zeros ) = 2 53.46/16.34 POL( active_1(x_1) ) = 2 53.46/16.34 POL( cons_2(x_1, x_2) ) = max{0, 2x_1 + 2x_2 - 2} 53.46/16.34 POL( 0 ) = 0 53.46/16.34 POL( tt ) = 0 53.46/16.34 POL( U42_1(x_1) ) = x_1 + 1 53.46/16.34 POL( isNatIList_1(x_1) ) = 0 53.46/16.34 POL( U52_1(x_1) ) = 2x_1 + 1 53.46/16.34 POL( isNatList_1(x_1) ) = 0 53.46/16.34 POL( U61_3(x_1, ..., x_3) ) = x_1 + x_2 + x_3 + 1 53.46/16.34 POL( U62_2(x_1, x_2) ) = x_2 53.46/16.34 POL( isNat_1(x_1) ) = 0 53.46/16.34 POL( s_1(x_1) ) = x_1 53.46/16.34 POL( length_1(x_1) ) = max{0, -2} 53.46/16.34 POL( U21_1(x_1) ) = max{0, -2} 53.46/16.34 POL( U11_1(x_1) ) = max{0, -2} 53.46/16.34 POL( U31_1(x_1) ) = max{0, -2} 53.46/16.34 POL( nil ) = 0 53.46/16.34 POL( MARK_1(x_1) ) = max{0, x_1 - 1} 53.46/16.34 53.46/16.34 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.34 none 53.46/16.34 53.46/16.34 53.46/16.34 ---------------------------------------- 53.46/16.34 53.46/16.34 (160) 53.46/16.34 Obligation: 53.46/16.34 Q DP problem: 53.46/16.34 The TRS P consists of the following rules: 53.46/16.34 53.46/16.34 MARK(U42(X)) -> MARK(X) 53.46/16.34 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.34 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.34 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.34 MARK(U52(X)) -> MARK(X) 53.46/16.34 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.34 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.34 53.46/16.34 The TRS R consists of the following rules: 53.46/16.34 53.46/16.34 mark(zeros) -> active(zeros) 53.46/16.34 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.34 active(zeros) -> mark(cons(0, zeros)) 53.46/16.34 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.34 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.34 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.34 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.34 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.34 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.34 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.34 mark(s(X)) -> active(s(mark(X))) 53.46/16.34 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.34 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.34 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.34 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.34 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.34 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.34 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.34 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.34 mark(0) -> active(0) 53.46/16.34 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.34 mark(tt) -> active(tt) 53.46/16.34 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.34 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.34 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.34 mark(isNat(X)) -> active(isNat(X)) 53.46/16.34 mark(length(X)) -> active(length(mark(X))) 53.46/16.34 mark(nil) -> active(nil) 53.46/16.34 length(active(X)) -> length(X) 53.46/16.34 length(mark(X)) -> length(X) 53.46/16.34 active(U21(tt)) -> mark(tt) 53.46/16.34 active(U42(tt)) -> mark(tt) 53.46/16.34 active(U52(tt)) -> mark(tt) 53.46/16.34 active(isNat(0)) -> mark(tt) 53.46/16.34 U31(active(X)) -> U31(X) 53.46/16.34 U31(mark(X)) -> U31(X) 53.46/16.34 U11(active(X)) -> U11(X) 53.46/16.34 U11(mark(X)) -> U11(X) 53.46/16.34 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.34 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.34 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.34 U42(active(X)) -> U42(X) 53.46/16.34 U42(mark(X)) -> U42(X) 53.46/16.34 U52(active(X)) -> U52(X) 53.46/16.34 U52(mark(X)) -> U52(X) 53.46/16.35 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.35 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.35 s(active(X)) -> s(X) 53.46/16.35 s(mark(X)) -> s(X) 53.46/16.35 U21(active(X)) -> U21(X) 53.46/16.35 U21(mark(X)) -> U21(X) 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.35 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.35 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.35 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.35 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (161) QDPOrderProof (EQUIVALENT) 53.46/16.35 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.35 53.46/16.35 53.46/16.35 The following pairs can be oriented strictly and are deleted. 53.46/16.35 53.46/16.35 ACTIVE(U51(tt, V2)) -> MARK(U52(isNatList(V2))) 53.46/16.35 The remaining pairs can at least be oriented weakly. 53.46/16.35 Used ordering: Combined order from the following AFS and order. 53.46/16.35 MARK(x1) = x1 53.46/16.35 53.46/16.35 U42(x1) = x1 53.46/16.35 53.46/16.35 U41(x1, x2) = x2 53.46/16.35 53.46/16.35 ACTIVE(x1) = x1 53.46/16.35 53.46/16.35 isNatIList(x1) = x1 53.46/16.35 53.46/16.35 U51(x1, x2) = U51 53.46/16.35 53.46/16.35 U52(x1) = x1 53.46/16.35 53.46/16.35 isNatList(x1) = isNatList 53.46/16.35 53.46/16.35 cons(x1, x2) = x2 53.46/16.35 53.46/16.35 mark(x1) = x1 53.46/16.35 53.46/16.35 active(x1) = x1 53.46/16.35 53.46/16.35 53.46/16.35 Knuth-Bendix order [KBO] with precedence:U51 > isNatList 53.46/16.35 53.46/16.35 and weight map: 53.46/16.35 53.46/16.35 isNatList=1 53.46/16.35 U51=1 53.46/16.35 53.46/16.35 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.35 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 53.46/16.35 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (162) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.35 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.35 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.35 53.46/16.35 The TRS R consists of the following rules: 53.46/16.35 53.46/16.35 mark(zeros) -> active(zeros) 53.46/16.35 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.35 active(zeros) -> mark(cons(0, zeros)) 53.46/16.35 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.35 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.35 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.35 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.35 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.35 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.35 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.35 mark(s(X)) -> active(s(mark(X))) 53.46/16.35 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.35 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.35 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.35 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.35 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.35 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.35 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.35 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.35 mark(0) -> active(0) 53.46/16.35 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.35 mark(tt) -> active(tt) 53.46/16.35 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.35 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.35 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.35 mark(isNat(X)) -> active(isNat(X)) 53.46/16.35 mark(length(X)) -> active(length(mark(X))) 53.46/16.35 mark(nil) -> active(nil) 53.46/16.35 length(active(X)) -> length(X) 53.46/16.35 length(mark(X)) -> length(X) 53.46/16.35 active(U21(tt)) -> mark(tt) 53.46/16.35 active(U42(tt)) -> mark(tt) 53.46/16.35 active(U52(tt)) -> mark(tt) 53.46/16.35 active(isNat(0)) -> mark(tt) 53.46/16.35 U31(active(X)) -> U31(X) 53.46/16.35 U31(mark(X)) -> U31(X) 53.46/16.35 U11(active(X)) -> U11(X) 53.46/16.35 U11(mark(X)) -> U11(X) 53.46/16.35 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.35 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.35 U42(active(X)) -> U42(X) 53.46/16.35 U42(mark(X)) -> U42(X) 53.46/16.35 U52(active(X)) -> U52(X) 53.46/16.35 U52(mark(X)) -> U52(X) 53.46/16.35 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.35 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.35 s(active(X)) -> s(X) 53.46/16.35 s(mark(X)) -> s(X) 53.46/16.35 U21(active(X)) -> U21(X) 53.46/16.35 U21(mark(X)) -> U21(X) 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.35 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.35 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.35 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.35 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (163) QDPOrderProof (EQUIVALENT) 53.46/16.35 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.35 53.46/16.35 53.46/16.35 The following pairs can be oriented strictly and are deleted. 53.46/16.35 53.46/16.35 ACTIVE(isNatIList(cons(V1, V2))) -> MARK(U41(isNat(V1), V2)) 53.46/16.35 The remaining pairs can at least be oriented weakly. 53.46/16.35 Used ordering: Combined order from the following AFS and order. 53.46/16.35 MARK(x1) = x1 53.46/16.35 53.46/16.35 U42(x1) = x1 53.46/16.35 53.46/16.35 U41(x1, x2) = x2 53.46/16.35 53.46/16.35 ACTIVE(x1) = x1 53.46/16.35 53.46/16.35 isNatIList(x1) = x1 53.46/16.35 53.46/16.35 U52(x1) = x1 53.46/16.35 53.46/16.35 cons(x1, x2) = cons(x2) 53.46/16.35 53.46/16.35 mark(x1) = x1 53.46/16.35 53.46/16.35 active(x1) = x1 53.46/16.35 53.46/16.35 53.46/16.35 Knuth-Bendix order [KBO] with precedence:trivial 53.46/16.35 53.46/16.35 and weight map: 53.46/16.35 53.46/16.35 dummyConstant=1 53.46/16.35 cons_1=1 53.46/16.35 53.46/16.35 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.35 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 53.46/16.35 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (164) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.35 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 MARK(isNatIList(X)) -> ACTIVE(isNatIList(X)) 53.46/16.35 53.46/16.35 The TRS R consists of the following rules: 53.46/16.35 53.46/16.35 mark(zeros) -> active(zeros) 53.46/16.35 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.35 active(zeros) -> mark(cons(0, zeros)) 53.46/16.35 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.35 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.35 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.35 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.35 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.35 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.35 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.35 mark(s(X)) -> active(s(mark(X))) 53.46/16.35 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.35 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.35 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.35 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.35 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.35 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.35 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.35 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.35 mark(0) -> active(0) 53.46/16.35 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.35 mark(tt) -> active(tt) 53.46/16.35 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.35 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.35 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.35 mark(isNat(X)) -> active(isNat(X)) 53.46/16.35 mark(length(X)) -> active(length(mark(X))) 53.46/16.35 mark(nil) -> active(nil) 53.46/16.35 length(active(X)) -> length(X) 53.46/16.35 length(mark(X)) -> length(X) 53.46/16.35 active(U21(tt)) -> mark(tt) 53.46/16.35 active(U42(tt)) -> mark(tt) 53.46/16.35 active(U52(tt)) -> mark(tt) 53.46/16.35 active(isNat(0)) -> mark(tt) 53.46/16.35 U31(active(X)) -> U31(X) 53.46/16.35 U31(mark(X)) -> U31(X) 53.46/16.35 U11(active(X)) -> U11(X) 53.46/16.35 U11(mark(X)) -> U11(X) 53.46/16.35 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.35 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.35 U42(active(X)) -> U42(X) 53.46/16.35 U42(mark(X)) -> U42(X) 53.46/16.35 U52(active(X)) -> U52(X) 53.46/16.35 U52(mark(X)) -> U52(X) 53.46/16.35 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.35 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.35 s(active(X)) -> s(X) 53.46/16.35 s(mark(X)) -> s(X) 53.46/16.35 U21(active(X)) -> U21(X) 53.46/16.35 U21(mark(X)) -> U21(X) 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.35 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.35 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.35 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.35 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (165) DependencyGraphProof (EQUIVALENT) 53.46/16.35 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (166) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.35 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 53.46/16.35 The TRS R consists of the following rules: 53.46/16.35 53.46/16.35 mark(zeros) -> active(zeros) 53.46/16.35 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.35 active(zeros) -> mark(cons(0, zeros)) 53.46/16.35 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.35 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.35 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.35 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.35 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.35 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.35 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.35 mark(s(X)) -> active(s(mark(X))) 53.46/16.35 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.35 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.35 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.35 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.35 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.35 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.35 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.35 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.35 mark(0) -> active(0) 53.46/16.35 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.35 mark(tt) -> active(tt) 53.46/16.35 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.35 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.35 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.35 mark(isNat(X)) -> active(isNat(X)) 53.46/16.35 mark(length(X)) -> active(length(mark(X))) 53.46/16.35 mark(nil) -> active(nil) 53.46/16.35 length(active(X)) -> length(X) 53.46/16.35 length(mark(X)) -> length(X) 53.46/16.35 active(U21(tt)) -> mark(tt) 53.46/16.35 active(U42(tt)) -> mark(tt) 53.46/16.35 active(U52(tt)) -> mark(tt) 53.46/16.35 active(isNat(0)) -> mark(tt) 53.46/16.35 U31(active(X)) -> U31(X) 53.46/16.35 U31(mark(X)) -> U31(X) 53.46/16.35 U11(active(X)) -> U11(X) 53.46/16.35 U11(mark(X)) -> U11(X) 53.46/16.35 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.35 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.35 U42(active(X)) -> U42(X) 53.46/16.35 U42(mark(X)) -> U42(X) 53.46/16.35 U52(active(X)) -> U52(X) 53.46/16.35 U52(mark(X)) -> U52(X) 53.46/16.35 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.35 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.35 s(active(X)) -> s(X) 53.46/16.35 s(mark(X)) -> s(X) 53.46/16.35 U21(active(X)) -> U21(X) 53.46/16.35 U21(mark(X)) -> U21(X) 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.35 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.35 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.35 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.35 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (167) QDPOrderProof (EQUIVALENT) 53.46/16.35 We use the reduction pair processor [LPAR04,JAR06]. 53.46/16.35 53.46/16.35 53.46/16.35 The following pairs can be oriented strictly and are deleted. 53.46/16.35 53.46/16.35 MARK(U41(X1, X2)) -> ACTIVE(U41(mark(X1), X2)) 53.46/16.35 ACTIVE(U41(tt, V2)) -> MARK(U42(isNatIList(V2))) 53.46/16.35 The remaining pairs can at least be oriented weakly. 53.46/16.35 Used ordering: Combined order from the following AFS and order. 53.46/16.35 MARK(x1) = x1 53.46/16.35 53.46/16.35 U41(x1, x2) = U41 53.46/16.35 53.46/16.35 ACTIVE(x1) = ACTIVE 53.46/16.35 53.46/16.35 U42(x1) = x1 53.46/16.35 53.46/16.35 isNatIList(x1) = isNatIList 53.46/16.35 53.46/16.35 U52(x1) = x1 53.46/16.35 53.46/16.35 53.46/16.35 Knuth-Bendix order [KBO] with precedence:trivial 53.46/16.35 53.46/16.35 and weight map: 53.46/16.35 53.46/16.35 isNatIList=1 53.46/16.35 U41=3 53.46/16.35 ACTIVE=2 53.46/16.35 53.46/16.35 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 53.46/16.35 none 53.46/16.35 53.46/16.35 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (168) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 53.46/16.35 The TRS R consists of the following rules: 53.46/16.35 53.46/16.35 mark(zeros) -> active(zeros) 53.46/16.35 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 53.46/16.35 active(zeros) -> mark(cons(0, zeros)) 53.46/16.35 active(U41(tt, V2)) -> mark(U42(isNatIList(V2))) 53.46/16.35 mark(U42(X)) -> active(U42(mark(X))) 53.46/16.35 active(U51(tt, V2)) -> mark(U52(isNatList(V2))) 53.46/16.35 mark(U52(X)) -> active(U52(mark(X))) 53.46/16.35 active(U61(tt, L, N)) -> mark(U62(isNat(N), L)) 53.46/16.35 mark(U62(X1, X2)) -> active(U62(mark(X1), X2)) 53.46/16.35 active(U62(tt, L)) -> mark(s(length(L))) 53.46/16.35 mark(s(X)) -> active(s(mark(X))) 53.46/16.35 active(isNat(s(V1))) -> mark(U21(isNat(V1))) 53.46/16.35 mark(U21(X)) -> active(U21(mark(X))) 53.46/16.35 active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) 53.46/16.35 mark(U41(X1, X2)) -> active(U41(mark(X1), X2)) 53.46/16.35 active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) 53.46/16.35 mark(U51(X1, X2)) -> active(U51(mark(X1), X2)) 53.46/16.35 active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) 53.46/16.35 mark(U61(X1, X2, X3)) -> active(U61(mark(X1), X2, X3)) 53.46/16.35 mark(0) -> active(0) 53.46/16.35 mark(U11(X)) -> active(U11(mark(X))) 53.46/16.35 mark(tt) -> active(tt) 53.46/16.35 mark(U31(X)) -> active(U31(mark(X))) 53.46/16.35 mark(isNatIList(X)) -> active(isNatIList(X)) 53.46/16.35 mark(isNatList(X)) -> active(isNatList(X)) 53.46/16.35 mark(isNat(X)) -> active(isNat(X)) 53.46/16.35 mark(length(X)) -> active(length(mark(X))) 53.46/16.35 mark(nil) -> active(nil) 53.46/16.35 length(active(X)) -> length(X) 53.46/16.35 length(mark(X)) -> length(X) 53.46/16.35 active(U21(tt)) -> mark(tt) 53.46/16.35 active(U42(tt)) -> mark(tt) 53.46/16.35 active(U52(tt)) -> mark(tt) 53.46/16.35 active(isNat(0)) -> mark(tt) 53.46/16.35 U31(active(X)) -> U31(X) 53.46/16.35 U31(mark(X)) -> U31(X) 53.46/16.35 U11(active(X)) -> U11(X) 53.46/16.35 U11(mark(X)) -> U11(X) 53.46/16.35 cons(X1, mark(X2)) -> cons(X1, X2) 53.46/16.35 cons(mark(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(active(X1), X2) -> cons(X1, X2) 53.46/16.35 cons(X1, active(X2)) -> cons(X1, X2) 53.46/16.35 U42(active(X)) -> U42(X) 53.46/16.35 U42(mark(X)) -> U42(X) 53.46/16.35 U52(active(X)) -> U52(X) 53.46/16.35 U52(mark(X)) -> U52(X) 53.46/16.35 U62(X1, mark(X2)) -> U62(X1, X2) 53.46/16.35 U62(mark(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(active(X1), X2) -> U62(X1, X2) 53.46/16.35 U62(X1, active(X2)) -> U62(X1, X2) 53.46/16.35 s(active(X)) -> s(X) 53.46/16.35 s(mark(X)) -> s(X) 53.46/16.35 U21(active(X)) -> U21(X) 53.46/16.35 U21(mark(X)) -> U21(X) 53.46/16.35 U41(X1, mark(X2)) -> U41(X1, X2) 53.46/16.35 U41(mark(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(active(X1), X2) -> U41(X1, X2) 53.46/16.35 U41(X1, active(X2)) -> U41(X1, X2) 53.46/16.35 U51(X1, mark(X2)) -> U51(X1, X2) 53.46/16.35 U51(mark(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(active(X1), X2) -> U51(X1, X2) 53.46/16.35 U51(X1, active(X2)) -> U51(X1, X2) 53.46/16.35 U61(X1, mark(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(mark(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, mark(X3)) -> U61(X1, X2, X3) 53.46/16.35 U61(active(X1), X2, X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, active(X2), X3) -> U61(X1, X2, X3) 53.46/16.35 U61(X1, X2, active(X3)) -> U61(X1, X2, X3) 53.46/16.35 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (169) UsableRulesProof (EQUIVALENT) 53.46/16.35 As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (170) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 53.46/16.35 R is empty. 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (171) QReductionProof (EQUIVALENT) 53.46/16.35 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 53.46/16.35 53.46/16.35 active(zeros) 53.46/16.35 active(U11(tt)) 53.46/16.35 active(U21(tt)) 53.46/16.35 active(U31(tt)) 53.46/16.35 active(U41(tt, x0)) 53.46/16.35 active(U42(tt)) 53.46/16.35 active(U51(tt, x0)) 53.46/16.35 active(U52(tt)) 53.46/16.35 active(U61(tt, x0, x1)) 53.46/16.35 active(U62(tt, x0)) 53.46/16.35 active(isNat(0)) 53.46/16.35 active(isNat(length(x0))) 53.46/16.35 active(isNat(s(x0))) 53.46/16.35 active(isNatIList(x0)) 53.46/16.35 active(isNatList(nil)) 53.46/16.35 active(isNatList(cons(x0, x1))) 53.46/16.35 active(length(nil)) 53.46/16.35 active(length(cons(x0, x1))) 53.46/16.35 mark(zeros) 53.46/16.35 mark(cons(x0, x1)) 53.46/16.35 mark(0) 53.46/16.35 mark(U11(x0)) 53.46/16.35 mark(tt) 53.46/16.35 mark(U21(x0)) 53.46/16.35 mark(U31(x0)) 53.46/16.35 mark(U41(x0, x1)) 53.46/16.35 mark(U42(x0)) 53.46/16.35 mark(isNatIList(x0)) 53.46/16.35 mark(U51(x0, x1)) 53.46/16.35 mark(U52(x0)) 53.46/16.35 mark(isNatList(x0)) 53.46/16.35 mark(U61(x0, x1, x2)) 53.46/16.35 mark(U62(x0, x1)) 53.46/16.35 mark(isNat(x0)) 53.46/16.35 mark(s(x0)) 53.46/16.35 mark(length(x0)) 53.46/16.35 mark(nil) 53.46/16.35 cons(mark(x0), x1) 53.46/16.35 cons(x0, mark(x1)) 53.46/16.35 cons(active(x0), x1) 53.46/16.35 cons(x0, active(x1)) 53.46/16.35 U11(mark(x0)) 53.46/16.35 U11(active(x0)) 53.46/16.35 U21(mark(x0)) 53.46/16.35 U21(active(x0)) 53.46/16.35 U31(mark(x0)) 53.46/16.35 U31(active(x0)) 53.46/16.35 U41(mark(x0), x1) 53.46/16.35 U41(x0, mark(x1)) 53.46/16.35 U41(active(x0), x1) 53.46/16.35 U41(x0, active(x1)) 53.46/16.35 isNatIList(mark(x0)) 53.46/16.35 isNatIList(active(x0)) 53.46/16.35 U51(mark(x0), x1) 53.46/16.35 U51(x0, mark(x1)) 53.46/16.35 U51(active(x0), x1) 53.46/16.35 U51(x0, active(x1)) 53.46/16.35 isNatList(mark(x0)) 53.46/16.35 isNatList(active(x0)) 53.46/16.35 U61(mark(x0), x1, x2) 53.46/16.35 U61(x0, mark(x1), x2) 53.46/16.35 U61(x0, x1, mark(x2)) 53.46/16.35 U61(active(x0), x1, x2) 53.46/16.35 U61(x0, active(x1), x2) 53.46/16.35 U61(x0, x1, active(x2)) 53.46/16.35 U62(mark(x0), x1) 53.46/16.35 U62(x0, mark(x1)) 53.46/16.35 U62(active(x0), x1) 53.46/16.35 U62(x0, active(x1)) 53.46/16.35 isNat(mark(x0)) 53.46/16.35 isNat(active(x0)) 53.46/16.35 s(mark(x0)) 53.46/16.35 s(active(x0)) 53.46/16.35 length(mark(x0)) 53.46/16.35 length(active(x0)) 53.46/16.35 53.46/16.35 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (172) 53.46/16.35 Obligation: 53.46/16.35 Q DP problem: 53.46/16.35 The TRS P consists of the following rules: 53.46/16.35 53.46/16.35 MARK(U42(X)) -> MARK(X) 53.46/16.35 MARK(U52(X)) -> MARK(X) 53.46/16.35 53.46/16.35 R is empty. 53.46/16.35 The set Q consists of the following terms: 53.46/16.35 53.46/16.35 U42(mark(x0)) 53.46/16.35 U42(active(x0)) 53.46/16.35 U52(mark(x0)) 53.46/16.35 U52(active(x0)) 53.46/16.35 53.46/16.35 We have to consider all minimal (P,Q,R)-chains. 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (173) QDPSizeChangeProof (EQUIVALENT) 53.46/16.35 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. 53.46/16.35 53.46/16.35 From the DPs we obtained the following set of size-change graphs: 53.46/16.35 *MARK(U42(X)) -> MARK(X) 53.46/16.35 The graph contains the following edges 1 > 1 53.46/16.35 53.46/16.35 53.46/16.35 *MARK(U52(X)) -> MARK(X) 53.46/16.35 The graph contains the following edges 1 > 1 53.46/16.35 53.46/16.35 53.46/16.35 ---------------------------------------- 53.46/16.35 53.46/16.35 (174) 53.46/16.35 YES 53.66/16.40 EOF