20.16/10.61 YES 20.16/10.62 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 20.16/10.62 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 20.16/10.62 20.16/10.62 20.16/10.62 Termination w.r.t. Q of the given QTRS could be proven: 20.16/10.62 20.16/10.62 (0) QTRS 20.16/10.62 (1) QTRSRRRProof [EQUIVALENT, 201 ms] 20.16/10.62 (2) QTRS 20.16/10.62 (3) QTRSRRRProof [EQUIVALENT, 69 ms] 20.16/10.62 (4) QTRS 20.16/10.62 (5) QTRSRRRProof [EQUIVALENT, 52 ms] 20.16/10.62 (6) QTRS 20.16/10.62 (7) DependencyPairsProof [EQUIVALENT, 45 ms] 20.16/10.62 (8) QDP 20.16/10.62 (9) DependencyGraphProof [EQUIVALENT, 0 ms] 20.16/10.62 (10) AND 20.16/10.62 (11) QDP 20.16/10.62 (12) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (13) QDP 20.16/10.62 (14) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (15) QDP 20.16/10.62 (16) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (17) YES 20.16/10.62 (18) QDP 20.16/10.62 (19) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (20) QDP 20.16/10.62 (21) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (22) QDP 20.16/10.62 (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (24) YES 20.16/10.62 (25) QDP 20.16/10.62 (26) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (27) QDP 20.16/10.62 (28) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (29) QDP 20.16/10.62 (30) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (31) YES 20.16/10.62 (32) QDP 20.16/10.62 (33) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (34) QDP 20.16/10.62 (35) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (36) QDP 20.16/10.62 (37) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (38) YES 20.16/10.62 (39) QDP 20.16/10.62 (40) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (41) QDP 20.16/10.62 (42) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (43) QDP 20.16/10.62 (44) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (45) YES 20.16/10.62 (46) QDP 20.16/10.62 (47) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (48) QDP 20.16/10.62 (49) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (50) QDP 20.16/10.62 (51) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (52) YES 20.16/10.62 (53) QDP 20.16/10.62 (54) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (55) QDP 20.16/10.62 (56) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (57) QDP 20.16/10.62 (58) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (59) YES 20.16/10.62 (60) QDP 20.16/10.62 (61) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (62) QDP 20.16/10.62 (63) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (64) QDP 20.16/10.62 (65) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (66) YES 20.16/10.62 (67) QDP 20.16/10.62 (68) MRRProof [EQUIVALENT, 50 ms] 20.16/10.62 (69) QDP 20.16/10.62 (70) MRRProof [EQUIVALENT, 113 ms] 20.16/10.62 (71) QDP 20.16/10.62 (72) MRRProof [EQUIVALENT, 148 ms] 20.16/10.62 (73) QDP 20.16/10.62 (74) MRRProof [EQUIVALENT, 37 ms] 20.16/10.62 (75) QDP 20.16/10.62 (76) QDPQMonotonicMRRProof [EQUIVALENT, 191 ms] 20.16/10.62 (77) QDP 20.16/10.62 (78) QDPOrderProof [EQUIVALENT, 56 ms] 20.16/10.62 (79) QDP 20.16/10.62 (80) DependencyGraphProof [EQUIVALENT, 0 ms] 20.16/10.62 (81) QDP 20.16/10.62 (82) QDPOrderProof [EQUIVALENT, 25 ms] 20.16/10.62 (83) QDP 20.16/10.62 (84) QDPOrderProof [EQUIVALENT, 0 ms] 20.16/10.62 (85) QDP 20.16/10.62 (86) QDPQMonotonicMRRProof [EQUIVALENT, 81 ms] 20.16/10.62 (87) QDP 20.16/10.62 (88) QDPOrderProof [EQUIVALENT, 108 ms] 20.16/10.62 (89) QDP 20.16/10.62 (90) UsableRulesProof [EQUIVALENT, 0 ms] 20.16/10.62 (91) QDP 20.16/10.62 (92) QReductionProof [EQUIVALENT, 0 ms] 20.16/10.62 (93) QDP 20.16/10.62 (94) QDPSizeChangeProof [EQUIVALENT, 0 ms] 20.16/10.62 (95) YES 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (0) 20.16/10.62 Obligation: 20.16/10.62 Q restricted rewrite system: 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(0, XS)) -> mark(nil) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(nil, XS)) -> mark(nil) 20.16/10.62 active(zip(X, nil)) -> mark(nil) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(tail(cons(X, XS))) -> mark(XS) 20.16/10.62 active(repItems(nil)) -> mark(nil) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (1) QTRSRRRProof (EQUIVALENT) 20.16/10.62 Used ordering: 20.16/10.62 Polynomial interpretation [POLO]: 20.16/10.62 20.16/10.62 POL(0) = 0 20.16/10.62 POL(active(x_1)) = x_1 20.16/10.62 POL(cons(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(incr(x_1)) = 2*x_1 20.16/10.62 POL(mark(x_1)) = x_1 20.16/10.62 POL(nil) = 0 20.16/10.62 POL(oddNs) = 0 20.16/10.62 POL(pair(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(pairNs) = 0 20.16/10.62 POL(repItems(x_1)) = 2*x_1 20.16/10.62 POL(s(x_1)) = x_1 20.16/10.62 POL(tail(x_1)) = 2 + 2*x_1 20.16/10.62 POL(take(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 20.16/10.62 20.16/10.62 active(tail(cons(X, XS))) -> mark(XS) 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (2) 20.16/10.62 Obligation: 20.16/10.62 Q restricted rewrite system: 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(0, XS)) -> mark(nil) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(nil, XS)) -> mark(nil) 20.16/10.62 active(zip(X, nil)) -> mark(nil) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(nil)) -> mark(nil) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (3) QTRSRRRProof (EQUIVALENT) 20.16/10.62 Used ordering: 20.16/10.62 Polynomial interpretation [POLO]: 20.16/10.62 20.16/10.62 POL(0) = 0 20.16/10.62 POL(active(x_1)) = x_1 20.16/10.62 POL(cons(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(incr(x_1)) = 2*x_1 20.16/10.62 POL(mark(x_1)) = x_1 20.16/10.62 POL(nil) = 0 20.16/10.62 POL(oddNs) = 0 20.16/10.62 POL(pair(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(pairNs) = 0 20.16/10.62 POL(repItems(x_1)) = 2*x_1 20.16/10.62 POL(s(x_1)) = 2*x_1 20.16/10.62 POL(tail(x_1)) = x_1 20.16/10.62 POL(take(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 20.16/10.62 POL(zip(x_1, x_2)) = 2*x_1 + x_2 20.16/10.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 20.16/10.62 20.16/10.62 active(take(0, XS)) -> mark(nil) 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (4) 20.16/10.62 Obligation: 20.16/10.62 Q restricted rewrite system: 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(nil, XS)) -> mark(nil) 20.16/10.62 active(zip(X, nil)) -> mark(nil) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(nil)) -> mark(nil) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (5) QTRSRRRProof (EQUIVALENT) 20.16/10.62 Used ordering: 20.16/10.62 Polynomial interpretation [POLO]: 20.16/10.62 20.16/10.62 POL(0) = 0 20.16/10.62 POL(active(x_1)) = x_1 20.16/10.62 POL(cons(x_1, x_2)) = 2*x_1 + x_2 20.16/10.62 POL(incr(x_1)) = 2*x_1 20.16/10.62 POL(mark(x_1)) = x_1 20.16/10.62 POL(nil) = 2 20.16/10.62 POL(oddNs) = 0 20.16/10.62 POL(pair(x_1, x_2)) = x_1 + x_2 20.16/10.62 POL(pairNs) = 0 20.16/10.62 POL(repItems(x_1)) = 2*x_1 20.16/10.62 POL(s(x_1)) = x_1 20.16/10.62 POL(tail(x_1)) = x_1 20.16/10.62 POL(take(x_1, x_2)) = 2*x_1 + x_2 20.16/10.62 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.62 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 20.16/10.62 20.16/10.62 active(zip(nil, XS)) -> mark(nil) 20.16/10.62 active(zip(X, nil)) -> mark(nil) 20.16/10.62 active(repItems(nil)) -> mark(nil) 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (6) 20.16/10.62 Obligation: 20.16/10.62 Q restricted rewrite system: 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (7) DependencyPairsProof (EQUIVALENT) 20.16/10.62 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (8) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.62 ACTIVE(pairNs) -> CONS(0, incr(oddNs)) 20.16/10.62 ACTIVE(pairNs) -> INCR(oddNs) 20.16/10.62 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.62 ACTIVE(oddNs) -> INCR(pairNs) 20.16/10.62 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.62 ACTIVE(incr(cons(X, XS))) -> CONS(s(X), incr(XS)) 20.16/10.62 ACTIVE(incr(cons(X, XS))) -> S(X) 20.16/10.62 ACTIVE(incr(cons(X, XS))) -> INCR(XS) 20.16/10.62 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.62 ACTIVE(take(s(N), cons(X, XS))) -> CONS(X, take(N, XS)) 20.16/10.62 ACTIVE(take(s(N), cons(X, XS))) -> TAKE(N, XS) 20.16/10.62 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> CONS(pair(X, Y), zip(XS, YS)) 20.16/10.62 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> PAIR(X, Y) 20.16/10.62 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> ZIP(XS, YS) 20.16/10.62 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.62 ACTIVE(repItems(cons(X, XS))) -> CONS(X, cons(X, repItems(XS))) 20.16/10.62 ACTIVE(repItems(cons(X, XS))) -> CONS(X, repItems(XS)) 20.16/10.62 ACTIVE(repItems(cons(X, XS))) -> REPITEMS(XS) 20.16/10.62 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.62 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.62 MARK(cons(X1, X2)) -> CONS(mark(X1), X2) 20.16/10.62 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.62 MARK(0) -> ACTIVE(0) 20.16/10.62 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.62 MARK(incr(X)) -> INCR(mark(X)) 20.16/10.62 MARK(incr(X)) -> MARK(X) 20.16/10.62 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.62 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.62 MARK(s(X)) -> S(mark(X)) 20.16/10.62 MARK(s(X)) -> MARK(X) 20.16/10.62 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.62 MARK(take(X1, X2)) -> TAKE(mark(X1), mark(X2)) 20.16/10.62 MARK(take(X1, X2)) -> MARK(X1) 20.16/10.62 MARK(take(X1, X2)) -> MARK(X2) 20.16/10.62 MARK(nil) -> ACTIVE(nil) 20.16/10.62 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.62 MARK(zip(X1, X2)) -> ZIP(mark(X1), mark(X2)) 20.16/10.62 MARK(zip(X1, X2)) -> MARK(X1) 20.16/10.62 MARK(zip(X1, X2)) -> MARK(X2) 20.16/10.62 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.62 MARK(pair(X1, X2)) -> PAIR(mark(X1), mark(X2)) 20.16/10.62 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.62 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.62 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.62 MARK(tail(X)) -> TAIL(mark(X)) 20.16/10.62 MARK(tail(X)) -> MARK(X) 20.16/10.62 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.62 MARK(repItems(X)) -> REPITEMS(mark(X)) 20.16/10.62 MARK(repItems(X)) -> MARK(X) 20.16/10.62 CONS(mark(X1), X2) -> CONS(X1, X2) 20.16/10.62 CONS(X1, mark(X2)) -> CONS(X1, X2) 20.16/10.62 CONS(active(X1), X2) -> CONS(X1, X2) 20.16/10.62 CONS(X1, active(X2)) -> CONS(X1, X2) 20.16/10.62 INCR(mark(X)) -> INCR(X) 20.16/10.62 INCR(active(X)) -> INCR(X) 20.16/10.62 S(mark(X)) -> S(X) 20.16/10.62 S(active(X)) -> S(X) 20.16/10.62 TAKE(mark(X1), X2) -> TAKE(X1, X2) 20.16/10.62 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 20.16/10.62 TAKE(active(X1), X2) -> TAKE(X1, X2) 20.16/10.62 TAKE(X1, active(X2)) -> TAKE(X1, X2) 20.16/10.62 ZIP(mark(X1), X2) -> ZIP(X1, X2) 20.16/10.62 ZIP(X1, mark(X2)) -> ZIP(X1, X2) 20.16/10.62 ZIP(active(X1), X2) -> ZIP(X1, X2) 20.16/10.62 ZIP(X1, active(X2)) -> ZIP(X1, X2) 20.16/10.62 PAIR(mark(X1), X2) -> PAIR(X1, X2) 20.16/10.62 PAIR(X1, mark(X2)) -> PAIR(X1, X2) 20.16/10.62 PAIR(active(X1), X2) -> PAIR(X1, X2) 20.16/10.62 PAIR(X1, active(X2)) -> PAIR(X1, X2) 20.16/10.62 TAIL(mark(X)) -> TAIL(X) 20.16/10.62 TAIL(active(X)) -> TAIL(X) 20.16/10.62 REPITEMS(mark(X)) -> REPITEMS(X) 20.16/10.62 REPITEMS(active(X)) -> REPITEMS(X) 20.16/10.62 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (9) DependencyGraphProof (EQUIVALENT) 20.16/10.62 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 9 SCCs with 24 less nodes. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (10) 20.16/10.62 Complex Obligation (AND) 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (11) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 REPITEMS(active(X)) -> REPITEMS(X) 20.16/10.62 REPITEMS(mark(X)) -> REPITEMS(X) 20.16/10.62 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (12) UsableRulesProof (EQUIVALENT) 20.16/10.62 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. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (13) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 REPITEMS(active(X)) -> REPITEMS(X) 20.16/10.62 REPITEMS(mark(X)) -> REPITEMS(X) 20.16/10.62 20.16/10.62 R is empty. 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (14) QReductionProof (EQUIVALENT) 20.16/10.62 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.62 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (15) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 REPITEMS(active(X)) -> REPITEMS(X) 20.16/10.62 REPITEMS(mark(X)) -> REPITEMS(X) 20.16/10.62 20.16/10.62 R is empty. 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (16) QDPSizeChangeProof (EQUIVALENT) 20.16/10.62 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. 20.16/10.62 20.16/10.62 From the DPs we obtained the following set of size-change graphs: 20.16/10.62 *REPITEMS(active(X)) -> REPITEMS(X) 20.16/10.62 The graph contains the following edges 1 > 1 20.16/10.62 20.16/10.62 20.16/10.62 *REPITEMS(mark(X)) -> REPITEMS(X) 20.16/10.62 The graph contains the following edges 1 > 1 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (17) 20.16/10.62 YES 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (18) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 TAIL(active(X)) -> TAIL(X) 20.16/10.62 TAIL(mark(X)) -> TAIL(X) 20.16/10.62 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (19) UsableRulesProof (EQUIVALENT) 20.16/10.62 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. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (20) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 TAIL(active(X)) -> TAIL(X) 20.16/10.62 TAIL(mark(X)) -> TAIL(X) 20.16/10.62 20.16/10.62 R is empty. 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (21) QReductionProof (EQUIVALENT) 20.16/10.62 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.62 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (22) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 TAIL(active(X)) -> TAIL(X) 20.16/10.62 TAIL(mark(X)) -> TAIL(X) 20.16/10.62 20.16/10.62 R is empty. 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (23) QDPSizeChangeProof (EQUIVALENT) 20.16/10.62 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. 20.16/10.62 20.16/10.62 From the DPs we obtained the following set of size-change graphs: 20.16/10.62 *TAIL(active(X)) -> TAIL(X) 20.16/10.62 The graph contains the following edges 1 > 1 20.16/10.62 20.16/10.62 20.16/10.62 *TAIL(mark(X)) -> TAIL(X) 20.16/10.62 The graph contains the following edges 1 > 1 20.16/10.62 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (24) 20.16/10.62 YES 20.16/10.62 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (25) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 PAIR(X1, mark(X2)) -> PAIR(X1, X2) 20.16/10.62 PAIR(mark(X1), X2) -> PAIR(X1, X2) 20.16/10.62 PAIR(active(X1), X2) -> PAIR(X1, X2) 20.16/10.62 PAIR(X1, active(X2)) -> PAIR(X1, X2) 20.16/10.62 20.16/10.62 The TRS R consists of the following rules: 20.16/10.62 20.16/10.62 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.62 active(oddNs) -> mark(incr(pairNs)) 20.16/10.62 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.62 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.62 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.62 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.62 mark(pairNs) -> active(pairNs) 20.16/10.62 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.62 mark(0) -> active(0) 20.16/10.62 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.62 mark(oddNs) -> active(oddNs) 20.16/10.62 mark(s(X)) -> active(s(mark(X))) 20.16/10.62 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.62 mark(nil) -> active(nil) 20.16/10.62 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.62 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.62 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.62 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.62 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.62 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.62 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.62 incr(mark(X)) -> incr(X) 20.16/10.62 incr(active(X)) -> incr(X) 20.16/10.62 s(mark(X)) -> s(X) 20.16/10.62 s(active(X)) -> s(X) 20.16/10.62 take(mark(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.62 take(active(X1), X2) -> take(X1, X2) 20.16/10.62 take(X1, active(X2)) -> take(X1, X2) 20.16/10.62 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.62 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.62 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.62 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.62 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.62 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.62 tail(mark(X)) -> tail(X) 20.16/10.62 tail(active(X)) -> tail(X) 20.16/10.62 repItems(mark(X)) -> repItems(X) 20.16/10.62 repItems(active(X)) -> repItems(X) 20.16/10.62 20.16/10.62 The set Q consists of the following terms: 20.16/10.62 20.16/10.62 active(pairNs) 20.16/10.62 active(oddNs) 20.16/10.62 active(incr(cons(x0, x1))) 20.16/10.62 active(take(0, x0)) 20.16/10.62 active(take(s(x0), cons(x1, x2))) 20.16/10.62 active(zip(nil, x0)) 20.16/10.62 active(zip(x0, nil)) 20.16/10.62 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.62 active(tail(cons(x0, x1))) 20.16/10.62 active(repItems(nil)) 20.16/10.62 active(repItems(cons(x0, x1))) 20.16/10.62 mark(pairNs) 20.16/10.62 mark(cons(x0, x1)) 20.16/10.62 mark(0) 20.16/10.62 mark(incr(x0)) 20.16/10.62 mark(oddNs) 20.16/10.62 mark(s(x0)) 20.16/10.62 mark(take(x0, x1)) 20.16/10.62 mark(nil) 20.16/10.62 mark(zip(x0, x1)) 20.16/10.62 mark(pair(x0, x1)) 20.16/10.62 mark(tail(x0)) 20.16/10.62 mark(repItems(x0)) 20.16/10.62 cons(mark(x0), x1) 20.16/10.62 cons(x0, mark(x1)) 20.16/10.62 cons(active(x0), x1) 20.16/10.62 cons(x0, active(x1)) 20.16/10.62 incr(mark(x0)) 20.16/10.62 incr(active(x0)) 20.16/10.62 s(mark(x0)) 20.16/10.62 s(active(x0)) 20.16/10.62 take(mark(x0), x1) 20.16/10.62 take(x0, mark(x1)) 20.16/10.62 take(active(x0), x1) 20.16/10.62 take(x0, active(x1)) 20.16/10.62 zip(mark(x0), x1) 20.16/10.62 zip(x0, mark(x1)) 20.16/10.62 zip(active(x0), x1) 20.16/10.62 zip(x0, active(x1)) 20.16/10.62 pair(mark(x0), x1) 20.16/10.62 pair(x0, mark(x1)) 20.16/10.62 pair(active(x0), x1) 20.16/10.62 pair(x0, active(x1)) 20.16/10.62 tail(mark(x0)) 20.16/10.62 tail(active(x0)) 20.16/10.62 repItems(mark(x0)) 20.16/10.62 repItems(active(x0)) 20.16/10.62 20.16/10.62 We have to consider all minimal (P,Q,R)-chains. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (26) UsableRulesProof (EQUIVALENT) 20.16/10.62 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. 20.16/10.62 ---------------------------------------- 20.16/10.62 20.16/10.62 (27) 20.16/10.62 Obligation: 20.16/10.62 Q DP problem: 20.16/10.62 The TRS P consists of the following rules: 20.16/10.62 20.16/10.62 PAIR(X1, mark(X2)) -> PAIR(X1, X2) 20.16/10.62 PAIR(mark(X1), X2) -> PAIR(X1, X2) 20.16/10.63 PAIR(active(X1), X2) -> PAIR(X1, X2) 20.16/10.63 PAIR(X1, active(X2)) -> PAIR(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (28) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (29) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 PAIR(X1, mark(X2)) -> PAIR(X1, X2) 20.16/10.63 PAIR(mark(X1), X2) -> PAIR(X1, X2) 20.16/10.63 PAIR(active(X1), X2) -> PAIR(X1, X2) 20.16/10.63 PAIR(X1, active(X2)) -> PAIR(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (30) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *PAIR(X1, mark(X2)) -> PAIR(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 *PAIR(mark(X1), X2) -> PAIR(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *PAIR(active(X1), X2) -> PAIR(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *PAIR(X1, active(X2)) -> PAIR(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (31) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (32) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 ZIP(X1, mark(X2)) -> ZIP(X1, X2) 20.16/10.63 ZIP(mark(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(active(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(X1, active(X2)) -> ZIP(X1, X2) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (33) UsableRulesProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (34) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 ZIP(X1, mark(X2)) -> ZIP(X1, X2) 20.16/10.63 ZIP(mark(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(active(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(X1, active(X2)) -> ZIP(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (35) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (36) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 ZIP(X1, mark(X2)) -> ZIP(X1, X2) 20.16/10.63 ZIP(mark(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(active(X1), X2) -> ZIP(X1, X2) 20.16/10.63 ZIP(X1, active(X2)) -> ZIP(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (37) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *ZIP(X1, mark(X2)) -> ZIP(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 *ZIP(mark(X1), X2) -> ZIP(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *ZIP(active(X1), X2) -> ZIP(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *ZIP(X1, active(X2)) -> ZIP(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (38) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (39) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 20.16/10.63 TAKE(mark(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(active(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(X1, active(X2)) -> TAKE(X1, X2) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (40) UsableRulesProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (41) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 20.16/10.63 TAKE(mark(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(active(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(X1, active(X2)) -> TAKE(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (42) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (43) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 TAKE(X1, mark(X2)) -> TAKE(X1, X2) 20.16/10.63 TAKE(mark(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(active(X1), X2) -> TAKE(X1, X2) 20.16/10.63 TAKE(X1, active(X2)) -> TAKE(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (44) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *TAKE(X1, mark(X2)) -> TAKE(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 *TAKE(mark(X1), X2) -> TAKE(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *TAKE(active(X1), X2) -> TAKE(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *TAKE(X1, active(X2)) -> TAKE(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (45) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (46) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 S(active(X)) -> S(X) 20.16/10.63 S(mark(X)) -> S(X) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (47) UsableRulesProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (48) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 S(active(X)) -> S(X) 20.16/10.63 S(mark(X)) -> S(X) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (49) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (50) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 S(active(X)) -> S(X) 20.16/10.63 S(mark(X)) -> S(X) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (51) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *S(active(X)) -> S(X) 20.16/10.63 The graph contains the following edges 1 > 1 20.16/10.63 20.16/10.63 20.16/10.63 *S(mark(X)) -> S(X) 20.16/10.63 The graph contains the following edges 1 > 1 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (52) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (53) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 INCR(active(X)) -> INCR(X) 20.16/10.63 INCR(mark(X)) -> INCR(X) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (54) UsableRulesProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (55) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 INCR(active(X)) -> INCR(X) 20.16/10.63 INCR(mark(X)) -> INCR(X) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (56) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (57) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 INCR(active(X)) -> INCR(X) 20.16/10.63 INCR(mark(X)) -> INCR(X) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (58) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *INCR(active(X)) -> INCR(X) 20.16/10.63 The graph contains the following edges 1 > 1 20.16/10.63 20.16/10.63 20.16/10.63 *INCR(mark(X)) -> INCR(X) 20.16/10.63 The graph contains the following edges 1 > 1 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (59) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (60) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 CONS(X1, mark(X2)) -> CONS(X1, X2) 20.16/10.63 CONS(mark(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(active(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(X1, active(X2)) -> CONS(X1, X2) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (61) UsableRulesProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (62) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 CONS(X1, mark(X2)) -> CONS(X1, X2) 20.16/10.63 CONS(mark(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(active(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(X1, active(X2)) -> CONS(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (63) QReductionProof (EQUIVALENT) 20.16/10.63 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.63 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (64) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 CONS(X1, mark(X2)) -> CONS(X1, X2) 20.16/10.63 CONS(mark(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(active(X1), X2) -> CONS(X1, X2) 20.16/10.63 CONS(X1, active(X2)) -> CONS(X1, X2) 20.16/10.63 20.16/10.63 R is empty. 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (65) QDPSizeChangeProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 From the DPs we obtained the following set of size-change graphs: 20.16/10.63 *CONS(X1, mark(X2)) -> CONS(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 *CONS(mark(X1), X2) -> CONS(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *CONS(active(X1), X2) -> CONS(X1, X2) 20.16/10.63 The graph contains the following edges 1 > 1, 2 >= 2 20.16/10.63 20.16/10.63 20.16/10.63 *CONS(X1, active(X2)) -> CONS(X1, X2) 20.16/10.63 The graph contains the following edges 1 >= 1, 2 > 2 20.16/10.63 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (66) 20.16/10.63 YES 20.16/10.63 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (67) 20.16/10.63 Obligation: 20.16/10.63 Q DP problem: 20.16/10.63 The TRS P consists of the following rules: 20.16/10.63 20.16/10.63 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.63 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.63 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.63 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.63 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.63 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.63 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.63 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.63 MARK(incr(X)) -> MARK(X) 20.16/10.63 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.63 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.63 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.63 MARK(s(X)) -> MARK(X) 20.16/10.63 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.63 MARK(take(X1, X2)) -> MARK(X1) 20.16/10.63 MARK(take(X1, X2)) -> MARK(X2) 20.16/10.63 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.63 MARK(zip(X1, X2)) -> MARK(X1) 20.16/10.63 MARK(zip(X1, X2)) -> MARK(X2) 20.16/10.63 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.63 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.63 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.63 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.63 MARK(tail(X)) -> MARK(X) 20.16/10.63 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.63 MARK(repItems(X)) -> MARK(X) 20.16/10.63 20.16/10.63 The TRS R consists of the following rules: 20.16/10.63 20.16/10.63 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.63 active(oddNs) -> mark(incr(pairNs)) 20.16/10.63 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.63 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.63 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.63 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.63 mark(pairNs) -> active(pairNs) 20.16/10.63 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.63 mark(0) -> active(0) 20.16/10.63 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.63 mark(oddNs) -> active(oddNs) 20.16/10.63 mark(s(X)) -> active(s(mark(X))) 20.16/10.63 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.63 mark(nil) -> active(nil) 20.16/10.63 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.63 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.63 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.63 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.63 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.63 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.63 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.63 incr(mark(X)) -> incr(X) 20.16/10.63 incr(active(X)) -> incr(X) 20.16/10.63 s(mark(X)) -> s(X) 20.16/10.63 s(active(X)) -> s(X) 20.16/10.63 take(mark(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.63 take(active(X1), X2) -> take(X1, X2) 20.16/10.63 take(X1, active(X2)) -> take(X1, X2) 20.16/10.63 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.63 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.63 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.63 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.63 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.63 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.63 tail(mark(X)) -> tail(X) 20.16/10.63 tail(active(X)) -> tail(X) 20.16/10.63 repItems(mark(X)) -> repItems(X) 20.16/10.63 repItems(active(X)) -> repItems(X) 20.16/10.63 20.16/10.63 The set Q consists of the following terms: 20.16/10.63 20.16/10.63 active(pairNs) 20.16/10.63 active(oddNs) 20.16/10.63 active(incr(cons(x0, x1))) 20.16/10.63 active(take(0, x0)) 20.16/10.63 active(take(s(x0), cons(x1, x2))) 20.16/10.63 active(zip(nil, x0)) 20.16/10.63 active(zip(x0, nil)) 20.16/10.63 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.63 active(tail(cons(x0, x1))) 20.16/10.63 active(repItems(nil)) 20.16/10.63 active(repItems(cons(x0, x1))) 20.16/10.63 mark(pairNs) 20.16/10.63 mark(cons(x0, x1)) 20.16/10.63 mark(0) 20.16/10.63 mark(incr(x0)) 20.16/10.63 mark(oddNs) 20.16/10.63 mark(s(x0)) 20.16/10.63 mark(take(x0, x1)) 20.16/10.63 mark(nil) 20.16/10.63 mark(zip(x0, x1)) 20.16/10.63 mark(pair(x0, x1)) 20.16/10.63 mark(tail(x0)) 20.16/10.63 mark(repItems(x0)) 20.16/10.63 cons(mark(x0), x1) 20.16/10.63 cons(x0, mark(x1)) 20.16/10.63 cons(active(x0), x1) 20.16/10.63 cons(x0, active(x1)) 20.16/10.63 incr(mark(x0)) 20.16/10.63 incr(active(x0)) 20.16/10.63 s(mark(x0)) 20.16/10.63 s(active(x0)) 20.16/10.63 take(mark(x0), x1) 20.16/10.63 take(x0, mark(x1)) 20.16/10.63 take(active(x0), x1) 20.16/10.63 take(x0, active(x1)) 20.16/10.63 zip(mark(x0), x1) 20.16/10.63 zip(x0, mark(x1)) 20.16/10.63 zip(active(x0), x1) 20.16/10.63 zip(x0, active(x1)) 20.16/10.63 pair(mark(x0), x1) 20.16/10.63 pair(x0, mark(x1)) 20.16/10.63 pair(active(x0), x1) 20.16/10.63 pair(x0, active(x1)) 20.16/10.63 tail(mark(x0)) 20.16/10.63 tail(active(x0)) 20.16/10.63 repItems(mark(x0)) 20.16/10.63 repItems(active(x0)) 20.16/10.63 20.16/10.63 We have to consider all minimal (P,Q,R)-chains. 20.16/10.63 ---------------------------------------- 20.16/10.63 20.16/10.63 (68) MRRProof (EQUIVALENT) 20.16/10.63 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. 20.16/10.63 20.16/10.63 Strictly oriented dependency pairs: 20.16/10.63 20.16/10.63 MARK(zip(X1, X2)) -> MARK(X1) 20.16/10.63 MARK(zip(X1, X2)) -> MARK(X2) 20.16/10.63 20.16/10.63 20.16/10.63 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = 2*x_1 20.16/10.64 POL(MARK(x_1)) = 2*x_1 20.16/10.64 POL(active(x_1)) = x_1 20.16/10.64 POL(cons(x_1, x_2)) = 2*x_1 + x_2 20.16/10.64 POL(incr(x_1)) = 2*x_1 20.16/10.64 POL(mark(x_1)) = x_1 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 0 20.16/10.64 POL(pair(x_1, x_2)) = 2*x_1 + x_2 20.16/10.64 POL(pairNs) = 0 20.16/10.64 POL(repItems(x_1)) = 2*x_1 20.16/10.64 POL(s(x_1)) = x_1 20.16/10.64 POL(tail(x_1)) = 2*x_1 20.16/10.64 POL(take(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.64 POL(zip(x_1, x_2)) = 1 + 2*x_1 + 2*x_2 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (69) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(take(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(take(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.64 MARK(tail(X)) -> MARK(X) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 MARK(repItems(X)) -> MARK(X) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (70) MRRProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 Strictly oriented dependency pairs: 20.16/10.64 20.16/10.64 MARK(take(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(take(X1, X2)) -> MARK(X2) 20.16/10.64 20.16/10.64 20.16/10.64 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = x_1 20.16/10.64 POL(MARK(x_1)) = x_1 20.16/10.64 POL(active(x_1)) = x_1 20.16/10.64 POL(cons(x_1, x_2)) = 2*x_1 + x_2 20.16/10.64 POL(incr(x_1)) = 2*x_1 20.16/10.64 POL(mark(x_1)) = x_1 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 0 20.16/10.64 POL(pair(x_1, x_2)) = 2*x_1 + x_2 20.16/10.64 POL(pairNs) = 0 20.16/10.64 POL(repItems(x_1)) = 2*x_1 20.16/10.64 POL(s(x_1)) = 2*x_1 20.16/10.64 POL(tail(x_1)) = x_1 20.16/10.64 POL(take(x_1, x_2)) = 1 + 2*x_1 + x_2 20.16/10.64 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (71) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.64 MARK(tail(X)) -> MARK(X) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 MARK(repItems(X)) -> MARK(X) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (72) MRRProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 Strictly oriented dependency pairs: 20.16/10.64 20.16/10.64 MARK(tail(X)) -> MARK(X) 20.16/10.64 20.16/10.64 20.16/10.64 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = 2*x_1 20.16/10.64 POL(MARK(x_1)) = 2*x_1 20.16/10.64 POL(active(x_1)) = x_1 20.16/10.64 POL(cons(x_1, x_2)) = x_1 + x_2 20.16/10.64 POL(incr(x_1)) = 2*x_1 20.16/10.64 POL(mark(x_1)) = x_1 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 0 20.16/10.64 POL(pair(x_1, x_2)) = x_1 + x_2 20.16/10.64 POL(pairNs) = 0 20.16/10.64 POL(repItems(x_1)) = 2*x_1 20.16/10.64 POL(s(x_1)) = 2*x_1 20.16/10.64 POL(tail(x_1)) = 1 + 2*x_1 20.16/10.64 POL(take(x_1, x_2)) = x_1 + x_2 20.16/10.64 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (73) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 MARK(repItems(X)) -> MARK(X) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (74) MRRProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 Strictly oriented dependency pairs: 20.16/10.64 20.16/10.64 MARK(repItems(X)) -> MARK(X) 20.16/10.64 20.16/10.64 20.16/10.64 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = 2*x_1 20.16/10.64 POL(MARK(x_1)) = 2*x_1 20.16/10.64 POL(active(x_1)) = x_1 20.16/10.64 POL(cons(x_1, x_2)) = 2*x_1 + x_2 20.16/10.64 POL(incr(x_1)) = 2*x_1 20.16/10.64 POL(mark(x_1)) = x_1 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 0 20.16/10.64 POL(pair(x_1, x_2)) = x_1 + x_2 20.16/10.64 POL(pairNs) = 0 20.16/10.64 POL(repItems(x_1)) = 2 + 2*x_1 20.16/10.64 POL(s(x_1)) = 2*x_1 20.16/10.64 POL(tail(x_1)) = x_1 20.16/10.64 POL(take(x_1, x_2)) = x_1 + 2*x_2 20.16/10.64 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (75) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (76) QDPQMonotonicMRRProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 Strictly oriented dependency pairs: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> ACTIVE(cons(mark(X1), X2)) 20.16/10.64 MARK(s(X)) -> ACTIVE(s(mark(X))) 20.16/10.64 MARK(pair(X1, X2)) -> ACTIVE(pair(mark(X1), mark(X2))) 20.16/10.64 MARK(tail(X)) -> ACTIVE(tail(mark(X))) 20.16/10.64 20.16/10.64 20.16/10.64 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = 2*x_1 20.16/10.64 POL(MARK(x_1)) = 2 20.16/10.64 POL(active(x_1)) = 0 20.16/10.64 POL(cons(x_1, x_2)) = 0 20.16/10.64 POL(incr(x_1)) = 1 20.16/10.64 POL(mark(x_1)) = 0 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 1 20.16/10.64 POL(pair(x_1, x_2)) = 0 20.16/10.64 POL(pairNs) = 1 20.16/10.64 POL(repItems(x_1)) = 1 20.16/10.64 POL(s(x_1)) = 0 20.16/10.64 POL(tail(x_1)) = 0 20.16/10.64 POL(take(x_1, x_2)) = 1 20.16/10.64 POL(zip(x_1, x_2)) = 1 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (77) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (78) QDPOrderProof (EQUIVALENT) 20.16/10.64 We use the reduction pair processor [LPAR04,JAR06]. 20.16/10.64 20.16/10.64 20.16/10.64 The following pairs can be oriented strictly and are deleted. 20.16/10.64 20.16/10.64 ACTIVE(pairNs) -> MARK(cons(0, incr(oddNs))) 20.16/10.64 ACTIVE(zip(cons(X, XS), cons(Y, YS))) -> MARK(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 ACTIVE(oddNs) -> MARK(incr(pairNs)) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pair(X1, X2)) -> MARK(X2) 20.16/10.64 The remaining pairs can at least be oriented weakly. 20.16/10.64 Used ordering: Combined order from the following AFS and order. 20.16/10.64 ACTIVE(x1) = x1 20.16/10.64 20.16/10.64 incr(x1) = x1 20.16/10.64 20.16/10.64 cons(x1, x2) = x1 20.16/10.64 20.16/10.64 MARK(x1) = x1 20.16/10.64 20.16/10.64 s(x1) = x1 20.16/10.64 20.16/10.64 pairNs = pairNs 20.16/10.64 20.16/10.64 0 = 0 20.16/10.64 20.16/10.64 mark(x1) = x1 20.16/10.64 20.16/10.64 take(x1, x2) = x2 20.16/10.64 20.16/10.64 zip(x1, x2) = zip(x1, x2) 20.16/10.64 20.16/10.64 pair(x1, x2) = pair(x1, x2) 20.16/10.64 20.16/10.64 repItems(x1) = x1 20.16/10.64 20.16/10.64 oddNs = oddNs 20.16/10.64 20.16/10.64 active(x1) = x1 20.16/10.64 20.16/10.64 nil = nil 20.16/10.64 20.16/10.64 tail(x1) = tail 20.16/10.64 20.16/10.64 20.16/10.64 Knuth-Bendix order [KBO] with precedence:oddNs > pairNs > 0 20.16/10.64 20.16/10.64 and weight map: 20.16/10.64 20.16/10.64 oddNs=1 20.16/10.64 tail=2 20.16/10.64 zip_2=2 20.16/10.64 0=1 20.16/10.64 pair_2=1 20.16/10.64 pairNs=1 20.16/10.64 nil=2 20.16/10.64 20.16/10.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 20.16/10.64 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (79) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(pairNs) -> ACTIVE(pairNs) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(oddNs) -> ACTIVE(oddNs) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (80) DependencyGraphProof (EQUIVALENT) 20.16/10.64 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (81) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (82) QDPOrderProof (EQUIVALENT) 20.16/10.64 We use the reduction pair processor [LPAR04,JAR06]. 20.16/10.64 20.16/10.64 20.16/10.64 The following pairs can be oriented strictly and are deleted. 20.16/10.64 20.16/10.64 ACTIVE(repItems(cons(X, XS))) -> MARK(cons(X, cons(X, repItems(XS)))) 20.16/10.64 The remaining pairs can at least be oriented weakly. 20.16/10.64 Used ordering: Combined order from the following AFS and order. 20.16/10.64 MARK(x1) = x1 20.16/10.64 20.16/10.64 cons(x1, x2) = x1 20.16/10.64 20.16/10.64 incr(x1) = x1 20.16/10.64 20.16/10.64 ACTIVE(x1) = x1 20.16/10.64 20.16/10.64 mark(x1) = x1 20.16/10.64 20.16/10.64 s(x1) = x1 20.16/10.64 20.16/10.64 take(x1, x2) = x2 20.16/10.64 20.16/10.64 repItems(x1) = repItems(x1) 20.16/10.64 20.16/10.64 zip(x1, x2) = zip 20.16/10.64 20.16/10.64 pairNs = pairNs 20.16/10.64 20.16/10.64 active(x1) = x1 20.16/10.64 20.16/10.64 0 = 0 20.16/10.64 20.16/10.64 oddNs = oddNs 20.16/10.64 20.16/10.64 pair(x1, x2) = pair 20.16/10.64 20.16/10.64 nil = nil 20.16/10.64 20.16/10.64 tail(x1) = tail 20.16/10.64 20.16/10.64 20.16/10.64 Knuth-Bendix order [KBO] with precedence:oddNs > pairNs > 0 20.16/10.64 20.16/10.64 and weight map: 20.16/10.64 20.16/10.64 oddNs=1 20.16/10.64 tail=2 20.16/10.64 zip=3 20.16/10.64 0=1 20.16/10.64 pair=2 20.16/10.64 pairNs=1 20.16/10.64 repItems_1=1 20.16/10.64 nil=2 20.16/10.64 20.16/10.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 20.16/10.64 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (83) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (84) QDPOrderProof (EQUIVALENT) 20.16/10.64 We use the reduction pair processor [LPAR04,JAR06]. 20.16/10.64 20.16/10.64 20.16/10.64 The following pairs can be oriented strictly and are deleted. 20.16/10.64 20.16/10.64 ACTIVE(take(s(N), cons(X, XS))) -> MARK(cons(X, take(N, XS))) 20.16/10.64 The remaining pairs can at least be oriented weakly. 20.16/10.64 Used ordering: Combined order from the following AFS and order. 20.16/10.64 MARK(x1) = x1 20.16/10.64 20.16/10.64 cons(x1, x2) = x1 20.16/10.64 20.16/10.64 incr(x1) = x1 20.16/10.64 20.16/10.64 ACTIVE(x1) = x1 20.16/10.64 20.16/10.64 mark(x1) = x1 20.16/10.64 20.16/10.64 s(x1) = x1 20.16/10.64 20.16/10.64 take(x1, x2) = take(x2) 20.16/10.64 20.16/10.64 zip(x1, x2) = zip 20.16/10.64 20.16/10.64 repItems(x1) = x1 20.16/10.64 20.16/10.64 pairNs = pairNs 20.16/10.64 20.16/10.64 active(x1) = x1 20.16/10.64 20.16/10.64 0 = 0 20.16/10.64 20.16/10.64 oddNs = oddNs 20.16/10.64 20.16/10.64 pair(x1, x2) = pair 20.16/10.64 20.16/10.64 nil = nil 20.16/10.64 20.16/10.64 tail(x1) = tail 20.16/10.64 20.16/10.64 20.16/10.64 Knuth-Bendix order [KBO] with precedence:oddNs > pairNs > 0 20.16/10.64 20.16/10.64 and weight map: 20.16/10.64 20.16/10.64 oddNs=1 20.16/10.64 tail=2 20.16/10.64 zip=3 20.16/10.64 take_1=1 20.16/10.64 0=1 20.16/10.64 pair=2 20.16/10.64 pairNs=1 20.16/10.64 nil=2 20.16/10.64 20.16/10.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 20.16/10.64 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (85) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (86) QDPQMonotonicMRRProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 Strictly oriented dependency pairs: 20.16/10.64 20.16/10.64 MARK(take(X1, X2)) -> ACTIVE(take(mark(X1), mark(X2))) 20.16/10.64 MARK(zip(X1, X2)) -> ACTIVE(zip(mark(X1), mark(X2))) 20.16/10.64 MARK(repItems(X)) -> ACTIVE(repItems(mark(X))) 20.16/10.64 20.16/10.64 20.16/10.64 Used ordering: Polynomial interpretation [POLO]: 20.16/10.64 20.16/10.64 POL(0) = 0 20.16/10.64 POL(ACTIVE(x_1)) = 2*x_1 20.16/10.64 POL(MARK(x_1)) = 2 20.16/10.64 POL(active(x_1)) = 0 20.16/10.64 POL(cons(x_1, x_2)) = 0 20.16/10.64 POL(incr(x_1)) = 1 20.16/10.64 POL(mark(x_1)) = 0 20.16/10.64 POL(nil) = 0 20.16/10.64 POL(oddNs) = 0 20.16/10.64 POL(pair(x_1, x_2)) = 0 20.16/10.64 POL(pairNs) = 0 20.16/10.64 POL(repItems(x_1)) = 0 20.16/10.64 POL(s(x_1)) = 0 20.16/10.64 POL(tail(x_1)) = 0 20.16/10.64 POL(take(x_1, x_2)) = 0 20.16/10.64 POL(zip(x_1, x_2)) = 0 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (87) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (88) QDPOrderProof (EQUIVALENT) 20.16/10.64 We use the reduction pair processor [LPAR04,JAR06]. 20.16/10.64 20.16/10.64 20.16/10.64 The following pairs can be oriented strictly and are deleted. 20.16/10.64 20.16/10.64 MARK(incr(X)) -> ACTIVE(incr(mark(X))) 20.16/10.64 ACTIVE(incr(cons(X, XS))) -> MARK(cons(s(X), incr(XS))) 20.16/10.64 MARK(incr(X)) -> MARK(X) 20.16/10.64 The remaining pairs can at least be oriented weakly. 20.16/10.64 Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: 20.16/10.64 20.16/10.64 POL( ACTIVE_1(x_1) ) = max{0, 2x_1 - 1} 20.16/10.64 POL( incr_1(x_1) ) = 2x_1 + 1 20.16/10.64 POL( mark_1(x_1) ) = x_1 20.16/10.64 POL( pairNs ) = 0 20.16/10.64 POL( active_1(x_1) ) = x_1 20.16/10.64 POL( cons_2(x_1, x_2) ) = 2x_1 20.16/10.64 POL( 0 ) = 0 20.16/10.64 POL( oddNs ) = 2 20.16/10.64 POL( s_1(x_1) ) = 2x_1 20.16/10.64 POL( take_2(x_1, x_2) ) = 2x_2 + 2 20.16/10.64 POL( zip_2(x_1, x_2) ) = 0 20.16/10.64 POL( pair_2(x_1, x_2) ) = max{0, -2} 20.16/10.64 POL( repItems_1(x_1) ) = 2x_1 20.16/10.64 POL( nil ) = 2 20.16/10.64 POL( tail_1(x_1) ) = x_1 + 2 20.16/10.64 POL( MARK_1(x_1) ) = 2x_1 20.16/10.64 20.16/10.64 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 20.16/10.64 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (89) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 20.16/10.64 The TRS R consists of the following rules: 20.16/10.64 20.16/10.64 active(pairNs) -> mark(cons(0, incr(oddNs))) 20.16/10.64 active(oddNs) -> mark(incr(pairNs)) 20.16/10.64 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 20.16/10.64 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 20.16/10.64 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 20.16/10.64 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 20.16/10.64 mark(pairNs) -> active(pairNs) 20.16/10.64 mark(cons(X1, X2)) -> active(cons(mark(X1), X2)) 20.16/10.64 mark(0) -> active(0) 20.16/10.64 mark(incr(X)) -> active(incr(mark(X))) 20.16/10.64 mark(oddNs) -> active(oddNs) 20.16/10.64 mark(s(X)) -> active(s(mark(X))) 20.16/10.64 mark(take(X1, X2)) -> active(take(mark(X1), mark(X2))) 20.16/10.64 mark(nil) -> active(nil) 20.16/10.64 mark(zip(X1, X2)) -> active(zip(mark(X1), mark(X2))) 20.16/10.64 mark(pair(X1, X2)) -> active(pair(mark(X1), mark(X2))) 20.16/10.64 mark(tail(X)) -> active(tail(mark(X))) 20.16/10.64 mark(repItems(X)) -> active(repItems(mark(X))) 20.16/10.64 cons(mark(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, mark(X2)) -> cons(X1, X2) 20.16/10.64 cons(active(X1), X2) -> cons(X1, X2) 20.16/10.64 cons(X1, active(X2)) -> cons(X1, X2) 20.16/10.64 incr(mark(X)) -> incr(X) 20.16/10.64 incr(active(X)) -> incr(X) 20.16/10.64 s(mark(X)) -> s(X) 20.16/10.64 s(active(X)) -> s(X) 20.16/10.64 take(mark(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, mark(X2)) -> take(X1, X2) 20.16/10.64 take(active(X1), X2) -> take(X1, X2) 20.16/10.64 take(X1, active(X2)) -> take(X1, X2) 20.16/10.64 zip(mark(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, mark(X2)) -> zip(X1, X2) 20.16/10.64 zip(active(X1), X2) -> zip(X1, X2) 20.16/10.64 zip(X1, active(X2)) -> zip(X1, X2) 20.16/10.64 pair(mark(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, mark(X2)) -> pair(X1, X2) 20.16/10.64 pair(active(X1), X2) -> pair(X1, X2) 20.16/10.64 pair(X1, active(X2)) -> pair(X1, X2) 20.16/10.64 tail(mark(X)) -> tail(X) 20.16/10.64 tail(active(X)) -> tail(X) 20.16/10.64 repItems(mark(X)) -> repItems(X) 20.16/10.64 repItems(active(X)) -> repItems(X) 20.16/10.64 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (90) UsableRulesProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (91) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 20.16/10.64 R is empty. 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (92) QReductionProof (EQUIVALENT) 20.16/10.64 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 20.16/10.64 20.16/10.64 active(pairNs) 20.16/10.64 active(oddNs) 20.16/10.64 active(incr(cons(x0, x1))) 20.16/10.64 active(take(0, x0)) 20.16/10.64 active(take(s(x0), cons(x1, x2))) 20.16/10.64 active(zip(nil, x0)) 20.16/10.64 active(zip(x0, nil)) 20.16/10.64 active(zip(cons(x0, x1), cons(x2, x3))) 20.16/10.64 active(tail(cons(x0, x1))) 20.16/10.64 active(repItems(nil)) 20.16/10.64 active(repItems(cons(x0, x1))) 20.16/10.64 mark(pairNs) 20.16/10.64 mark(cons(x0, x1)) 20.16/10.64 mark(0) 20.16/10.64 mark(incr(x0)) 20.16/10.64 mark(oddNs) 20.16/10.64 mark(s(x0)) 20.16/10.64 mark(take(x0, x1)) 20.16/10.64 mark(nil) 20.16/10.64 mark(zip(x0, x1)) 20.16/10.64 mark(pair(x0, x1)) 20.16/10.64 mark(tail(x0)) 20.16/10.64 mark(repItems(x0)) 20.16/10.64 incr(mark(x0)) 20.16/10.64 incr(active(x0)) 20.16/10.64 take(mark(x0), x1) 20.16/10.64 take(x0, mark(x1)) 20.16/10.64 take(active(x0), x1) 20.16/10.64 take(x0, active(x1)) 20.16/10.64 zip(mark(x0), x1) 20.16/10.64 zip(x0, mark(x1)) 20.16/10.64 zip(active(x0), x1) 20.16/10.64 zip(x0, active(x1)) 20.16/10.64 pair(mark(x0), x1) 20.16/10.64 pair(x0, mark(x1)) 20.16/10.64 pair(active(x0), x1) 20.16/10.64 pair(x0, active(x1)) 20.16/10.64 tail(mark(x0)) 20.16/10.64 tail(active(x0)) 20.16/10.64 repItems(mark(x0)) 20.16/10.64 repItems(active(x0)) 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (93) 20.16/10.64 Obligation: 20.16/10.64 Q DP problem: 20.16/10.64 The TRS P consists of the following rules: 20.16/10.64 20.16/10.64 MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 MARK(s(X)) -> MARK(X) 20.16/10.64 20.16/10.64 R is empty. 20.16/10.64 The set Q consists of the following terms: 20.16/10.64 20.16/10.64 cons(mark(x0), x1) 20.16/10.64 cons(x0, mark(x1)) 20.16/10.64 cons(active(x0), x1) 20.16/10.64 cons(x0, active(x1)) 20.16/10.64 s(mark(x0)) 20.16/10.64 s(active(x0)) 20.16/10.64 20.16/10.64 We have to consider all minimal (P,Q,R)-chains. 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (94) QDPSizeChangeProof (EQUIVALENT) 20.16/10.64 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. 20.16/10.64 20.16/10.64 From the DPs we obtained the following set of size-change graphs: 20.16/10.64 *MARK(cons(X1, X2)) -> MARK(X1) 20.16/10.64 The graph contains the following edges 1 > 1 20.16/10.64 20.16/10.64 20.16/10.64 *MARK(s(X)) -> MARK(X) 20.16/10.64 The graph contains the following edges 1 > 1 20.16/10.64 20.16/10.64 20.16/10.64 ---------------------------------------- 20.16/10.64 20.16/10.64 (95) 20.16/10.64 YES 20.47/10.70 EOF