4.83/2.15 YES 4.87/2.17 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 4.87/2.17 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.87/2.17 4.87/2.17 4.87/2.17 Termination w.r.t. Q of the given QTRS could be proven: 4.87/2.17 4.87/2.17 (0) QTRS 4.87/2.17 (1) QTRSToCSRProof [SOUND, 0 ms] 4.87/2.17 (2) CSR 4.87/2.17 (3) CSRRRRProof [EQUIVALENT, 90 ms] 4.87/2.17 (4) CSR 4.87/2.17 (5) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (6) CSR 4.87/2.17 (7) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (8) CSR 4.87/2.17 (9) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (10) CSR 4.87/2.17 (11) CSRRRRProof [EQUIVALENT, 5 ms] 4.87/2.17 (12) CSR 4.87/2.17 (13) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (14) CSR 4.87/2.17 (15) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (16) CSR 4.87/2.17 (17) CSRRRRProof [EQUIVALENT, 3 ms] 4.87/2.17 (18) CSR 4.87/2.17 (19) CSRRRRProof [EQUIVALENT, 0 ms] 4.87/2.17 (20) CSR 4.87/2.17 (21) RisEmptyProof [EQUIVALENT, 0 ms] 4.87/2.17 (22) YES 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (0) 4.87/2.17 Obligation: 4.87/2.17 Q restricted rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 active(pairNs) -> mark(cons(0, incr(oddNs))) 4.87/2.17 active(oddNs) -> mark(incr(pairNs)) 4.87/2.17 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 4.87/2.17 active(take(0, XS)) -> mark(nil) 4.87/2.17 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 4.87/2.17 active(zip(nil, XS)) -> mark(nil) 4.87/2.17 active(zip(X, nil)) -> mark(nil) 4.87/2.17 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 4.87/2.17 active(tail(cons(X, XS))) -> mark(XS) 4.87/2.17 active(repItems(nil)) -> mark(nil) 4.87/2.17 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 4.87/2.17 active(cons(X1, X2)) -> cons(active(X1), X2) 4.87/2.17 active(incr(X)) -> incr(active(X)) 4.87/2.17 active(s(X)) -> s(active(X)) 4.87/2.17 active(take(X1, X2)) -> take(active(X1), X2) 4.87/2.17 active(take(X1, X2)) -> take(X1, active(X2)) 4.87/2.17 active(zip(X1, X2)) -> zip(active(X1), X2) 4.87/2.17 active(zip(X1, X2)) -> zip(X1, active(X2)) 4.87/2.17 active(pair(X1, X2)) -> pair(active(X1), X2) 4.87/2.17 active(pair(X1, X2)) -> pair(X1, active(X2)) 4.87/2.17 active(tail(X)) -> tail(active(X)) 4.87/2.17 active(repItems(X)) -> repItems(active(X)) 4.87/2.17 cons(mark(X1), X2) -> mark(cons(X1, X2)) 4.87/2.17 incr(mark(X)) -> mark(incr(X)) 4.87/2.17 s(mark(X)) -> mark(s(X)) 4.87/2.17 take(mark(X1), X2) -> mark(take(X1, X2)) 4.87/2.17 take(X1, mark(X2)) -> mark(take(X1, X2)) 4.87/2.17 zip(mark(X1), X2) -> mark(zip(X1, X2)) 4.87/2.17 zip(X1, mark(X2)) -> mark(zip(X1, X2)) 4.87/2.17 pair(mark(X1), X2) -> mark(pair(X1, X2)) 4.87/2.17 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 4.87/2.17 tail(mark(X)) -> mark(tail(X)) 4.87/2.17 repItems(mark(X)) -> mark(repItems(X)) 4.87/2.17 proper(pairNs) -> ok(pairNs) 4.87/2.17 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 4.87/2.17 proper(0) -> ok(0) 4.87/2.17 proper(incr(X)) -> incr(proper(X)) 4.87/2.17 proper(oddNs) -> ok(oddNs) 4.87/2.17 proper(s(X)) -> s(proper(X)) 4.87/2.17 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 4.87/2.17 proper(nil) -> ok(nil) 4.87/2.17 proper(zip(X1, X2)) -> zip(proper(X1), proper(X2)) 4.87/2.17 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 4.87/2.17 proper(tail(X)) -> tail(proper(X)) 4.87/2.17 proper(repItems(X)) -> repItems(proper(X)) 4.87/2.17 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 4.87/2.17 incr(ok(X)) -> ok(incr(X)) 4.87/2.17 s(ok(X)) -> ok(s(X)) 4.87/2.17 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 4.87/2.17 zip(ok(X1), ok(X2)) -> ok(zip(X1, X2)) 4.87/2.17 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 4.87/2.17 tail(ok(X)) -> ok(tail(X)) 4.87/2.17 repItems(ok(X)) -> ok(repItems(X)) 4.87/2.17 top(mark(X)) -> top(proper(X)) 4.87/2.17 top(ok(X)) -> top(active(X)) 4.87/2.17 4.87/2.17 The set Q consists of the following terms: 4.87/2.17 4.87/2.17 active(pairNs) 4.87/2.17 active(oddNs) 4.87/2.17 active(cons(x0, x1)) 4.87/2.17 active(incr(x0)) 4.87/2.17 active(s(x0)) 4.87/2.17 active(take(x0, x1)) 4.87/2.17 active(zip(x0, x1)) 4.87/2.17 active(pair(x0, x1)) 4.87/2.17 active(tail(x0)) 4.87/2.17 active(repItems(x0)) 4.87/2.17 cons(mark(x0), x1) 4.87/2.17 incr(mark(x0)) 4.87/2.17 s(mark(x0)) 4.87/2.17 take(mark(x0), x1) 4.87/2.17 take(x0, mark(x1)) 4.87/2.17 zip(mark(x0), x1) 4.87/2.17 zip(x0, mark(x1)) 4.87/2.17 pair(mark(x0), x1) 4.87/2.17 pair(x0, mark(x1)) 4.87/2.17 tail(mark(x0)) 4.87/2.17 repItems(mark(x0)) 4.87/2.17 proper(pairNs) 4.87/2.17 proper(cons(x0, x1)) 4.87/2.17 proper(0) 4.87/2.17 proper(incr(x0)) 4.87/2.17 proper(oddNs) 4.87/2.17 proper(s(x0)) 4.87/2.17 proper(take(x0, x1)) 4.87/2.17 proper(nil) 4.87/2.17 proper(zip(x0, x1)) 4.87/2.17 proper(pair(x0, x1)) 4.87/2.17 proper(tail(x0)) 4.87/2.17 proper(repItems(x0)) 4.87/2.17 cons(ok(x0), ok(x1)) 4.87/2.17 incr(ok(x0)) 4.87/2.17 s(ok(x0)) 4.87/2.17 take(ok(x0), ok(x1)) 4.87/2.17 zip(ok(x0), ok(x1)) 4.87/2.17 pair(ok(x0), ok(x1)) 4.87/2.17 tail(ok(x0)) 4.87/2.17 repItems(ok(x0)) 4.87/2.17 top(mark(x0)) 4.87/2.17 top(ok(x0)) 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (1) QTRSToCSRProof (SOUND) 4.87/2.17 The following Q TRS is given: Q restricted rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 active(pairNs) -> mark(cons(0, incr(oddNs))) 4.87/2.17 active(oddNs) -> mark(incr(pairNs)) 4.87/2.17 active(incr(cons(X, XS))) -> mark(cons(s(X), incr(XS))) 4.87/2.17 active(take(0, XS)) -> mark(nil) 4.87/2.17 active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) 4.87/2.17 active(zip(nil, XS)) -> mark(nil) 4.87/2.17 active(zip(X, nil)) -> mark(nil) 4.87/2.17 active(zip(cons(X, XS), cons(Y, YS))) -> mark(cons(pair(X, Y), zip(XS, YS))) 4.87/2.17 active(tail(cons(X, XS))) -> mark(XS) 4.87/2.17 active(repItems(nil)) -> mark(nil) 4.87/2.17 active(repItems(cons(X, XS))) -> mark(cons(X, cons(X, repItems(XS)))) 4.87/2.17 active(cons(X1, X2)) -> cons(active(X1), X2) 4.87/2.17 active(incr(X)) -> incr(active(X)) 4.87/2.17 active(s(X)) -> s(active(X)) 4.87/2.17 active(take(X1, X2)) -> take(active(X1), X2) 4.87/2.17 active(take(X1, X2)) -> take(X1, active(X2)) 4.87/2.17 active(zip(X1, X2)) -> zip(active(X1), X2) 4.87/2.17 active(zip(X1, X2)) -> zip(X1, active(X2)) 4.87/2.17 active(pair(X1, X2)) -> pair(active(X1), X2) 4.87/2.17 active(pair(X1, X2)) -> pair(X1, active(X2)) 4.87/2.17 active(tail(X)) -> tail(active(X)) 4.87/2.17 active(repItems(X)) -> repItems(active(X)) 4.87/2.17 cons(mark(X1), X2) -> mark(cons(X1, X2)) 4.87/2.17 incr(mark(X)) -> mark(incr(X)) 4.87/2.17 s(mark(X)) -> mark(s(X)) 4.87/2.17 take(mark(X1), X2) -> mark(take(X1, X2)) 4.87/2.17 take(X1, mark(X2)) -> mark(take(X1, X2)) 4.87/2.17 zip(mark(X1), X2) -> mark(zip(X1, X2)) 4.87/2.17 zip(X1, mark(X2)) -> mark(zip(X1, X2)) 4.87/2.17 pair(mark(X1), X2) -> mark(pair(X1, X2)) 4.87/2.17 pair(X1, mark(X2)) -> mark(pair(X1, X2)) 4.87/2.17 tail(mark(X)) -> mark(tail(X)) 4.87/2.17 repItems(mark(X)) -> mark(repItems(X)) 4.87/2.17 proper(pairNs) -> ok(pairNs) 4.87/2.17 proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 4.87/2.17 proper(0) -> ok(0) 4.87/2.17 proper(incr(X)) -> incr(proper(X)) 4.87/2.17 proper(oddNs) -> ok(oddNs) 4.87/2.17 proper(s(X)) -> s(proper(X)) 4.87/2.17 proper(take(X1, X2)) -> take(proper(X1), proper(X2)) 4.87/2.17 proper(nil) -> ok(nil) 4.87/2.17 proper(zip(X1, X2)) -> zip(proper(X1), proper(X2)) 4.87/2.17 proper(pair(X1, X2)) -> pair(proper(X1), proper(X2)) 4.87/2.17 proper(tail(X)) -> tail(proper(X)) 4.87/2.17 proper(repItems(X)) -> repItems(proper(X)) 4.87/2.17 cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 4.87/2.17 incr(ok(X)) -> ok(incr(X)) 4.87/2.17 s(ok(X)) -> ok(s(X)) 4.87/2.17 take(ok(X1), ok(X2)) -> ok(take(X1, X2)) 4.87/2.17 zip(ok(X1), ok(X2)) -> ok(zip(X1, X2)) 4.87/2.17 pair(ok(X1), ok(X2)) -> ok(pair(X1, X2)) 4.87/2.17 tail(ok(X)) -> ok(tail(X)) 4.87/2.17 repItems(ok(X)) -> ok(repItems(X)) 4.87/2.17 top(mark(X)) -> top(proper(X)) 4.87/2.17 top(ok(X)) -> top(active(X)) 4.87/2.17 4.87/2.17 The set Q consists of the following terms: 4.87/2.17 4.87/2.17 active(pairNs) 4.87/2.17 active(oddNs) 4.87/2.17 active(cons(x0, x1)) 4.87/2.17 active(incr(x0)) 4.87/2.17 active(s(x0)) 4.87/2.17 active(take(x0, x1)) 4.87/2.17 active(zip(x0, x1)) 4.87/2.17 active(pair(x0, x1)) 4.87/2.17 active(tail(x0)) 4.87/2.17 active(repItems(x0)) 4.87/2.17 cons(mark(x0), x1) 4.87/2.17 incr(mark(x0)) 4.87/2.17 s(mark(x0)) 4.87/2.17 take(mark(x0), x1) 4.87/2.17 take(x0, mark(x1)) 4.87/2.17 zip(mark(x0), x1) 4.87/2.17 zip(x0, mark(x1)) 4.87/2.17 pair(mark(x0), x1) 4.87/2.17 pair(x0, mark(x1)) 4.87/2.17 tail(mark(x0)) 4.87/2.17 repItems(mark(x0)) 4.87/2.17 proper(pairNs) 4.87/2.17 proper(cons(x0, x1)) 4.87/2.17 proper(0) 4.87/2.17 proper(incr(x0)) 4.87/2.17 proper(oddNs) 4.87/2.17 proper(s(x0)) 4.87/2.17 proper(take(x0, x1)) 4.87/2.17 proper(nil) 4.87/2.17 proper(zip(x0, x1)) 4.87/2.17 proper(pair(x0, x1)) 4.87/2.17 proper(tail(x0)) 4.87/2.17 proper(repItems(x0)) 4.87/2.17 cons(ok(x0), ok(x1)) 4.87/2.17 incr(ok(x0)) 4.87/2.17 s(ok(x0)) 4.87/2.17 take(ok(x0), ok(x1)) 4.87/2.17 zip(ok(x0), ok(x1)) 4.87/2.17 pair(ok(x0), ok(x1)) 4.87/2.17 tail(ok(x0)) 4.87/2.17 repItems(ok(x0)) 4.87/2.17 top(mark(x0)) 4.87/2.17 top(ok(x0)) 4.87/2.17 4.87/2.17 Special symbols used for the transformation (see [GM04]): 4.87/2.17 top: top_1, active: active_1, mark: mark_1, ok: ok_1, proper: proper_1 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 tail: {1} 4.87/2.17 repItems: {1} 4.87/2.17 The QTRS contained just a subset of rules created by the complete Giesl-Middeldorp transformation. Therefore, the inverse transformation is sound, but not necessarily complete. 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (2) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 tail(cons(X, XS)) -> XS 4.87/2.17 repItems(nil) -> nil 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 tail: {1} 4.87/2.17 repItems: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (3) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 tail(cons(X, XS)) -> XS 4.87/2.17 repItems(nil) -> nil 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 tail: {1} 4.87/2.17 repItems: {1} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(0) = 0 4.87/2.17 POL(cons(x_1, x_2)) = 2*x_1 + x_2 4.87/2.17 POL(incr(x_1)) = 2*x_1 4.87/2.17 POL(nil) = 0 4.87/2.17 POL(oddNs) = 0 4.87/2.17 POL(pair(x_1, x_2)) = x_1 + x_2 4.87/2.17 POL(pairNs) = 0 4.87/2.17 POL(repItems(x_1)) = 2 + 2*x_1 4.87/2.17 POL(s(x_1)) = 2*x_1 4.87/2.17 POL(tail(x_1)) = 2*x_1 4.87/2.17 POL(take(x_1, x_2)) = x_1 + 2*x_2 4.87/2.17 POL(zip(x_1, x_2)) = 2*x_1 + 2*x_2 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 repItems(nil) -> nil 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (4) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 tail(cons(X, XS)) -> XS 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 tail: {1} 4.87/2.17 repItems: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (5) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 tail(cons(X, XS)) -> XS 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 tail: {1} 4.87/2.17 repItems: {1} 4.87/2.17 Used ordering: 4.87/2.17 Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(pairNs) = [[0], [0]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(cons(x_1, x_2)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 + [[1, 0], [0, 1]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(0) = [[0], [1]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(incr(x_1)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(oddNs) = [[0], [1]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(s(x_1)) = [[0], [1]] + [[1, 0], [1, 0]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(take(x_1, x_2)) = [[0], [0]] + [[1, 0], [1, 0]] * x_1 + [[1, 1], [1, 1]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(nil) = [[0], [0]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(zip(x_1, x_2)) = [[0], [0]] + [[1, 1], [1, 1]] * x_1 + [[1, 1], [1, 1]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(pair(x_1, x_2)) = [[0], [1]] + [[1, 0], [1, 1]] * x_1 + [[1, 0], [1, 1]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(tail(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(repItems(x_1)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 tail(cons(X, XS)) -> XS 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (6) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 repItems: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (7) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 repItems: {1} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(0) = 0 4.87/2.17 POL(cons(x_1, x_2)) = 1 + x_1 4.87/2.17 POL(incr(x_1)) = x_1 4.87/2.17 POL(nil) = 1 4.87/2.17 POL(oddNs) = 1 4.87/2.17 POL(pair(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(pairNs) = 1 4.87/2.17 POL(repItems(x_1)) = x_1 4.87/2.17 POL(s(x_1)) = x_1 4.87/2.17 POL(take(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(zip(x_1, x_2)) = x_1 + x_2 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 take(s(N), cons(X, XS)) -> cons(X, take(N, XS)) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (8) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 repItems: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (9) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 repItems: {1} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(0) = 0 4.87/2.17 POL(cons(x_1, x_2)) = 1 + x_1 4.87/2.17 POL(incr(x_1)) = x_1 4.87/2.17 POL(nil) = 1 4.87/2.17 POL(oddNs) = 1 4.87/2.17 POL(pair(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(pairNs) = 1 4.87/2.17 POL(repItems(x_1)) = 1 + x_1 4.87/2.17 POL(s(x_1)) = x_1 4.87/2.17 POL(take(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(zip(x_1, x_2)) = x_1 + x_2 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 repItems(cons(X, XS)) -> cons(X, cons(X, repItems(XS))) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (10) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (11) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 zip: {1, 2} 4.87/2.17 pair: {1, 2} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(0) = 0 4.87/2.17 POL(cons(x_1, x_2)) = 1 + x_1 4.87/2.17 POL(incr(x_1)) = x_1 4.87/2.17 POL(nil) = 1 4.87/2.17 POL(oddNs) = 1 4.87/2.17 POL(pair(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(pairNs) = 1 4.87/2.17 POL(s(x_1)) = x_1 4.87/2.17 POL(take(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 POL(zip(x_1, x_2)) = 1 + x_1 + x_2 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 zip(nil, XS) -> nil 4.87/2.17 zip(X, nil) -> nil 4.87/2.17 zip(cons(X, XS), cons(Y, YS)) -> cons(pair(X, Y), zip(XS, YS)) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (12) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (13) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 take(0, XS) -> nil 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 take: {1, 2} 4.87/2.17 nil: empty set 4.87/2.17 Used ordering: 4.87/2.17 Matrix interpretation [MATRO] to (N^2, +, *, >=, >) : 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(pairNs) = [[0], [1]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(cons(x_1, x_2)) = [[0], [0]] + [[1, 1], [0, 1]] * x_1 + [[1, 1], [0, 0]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(0) = [[0], [0]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(incr(x_1)) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(oddNs) = [[0], [1]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(s(x_1)) = [[0], [0]] + [[1, 1], [0, 0]] * x_1 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(take(x_1, x_2)) = [[1], [1]] + [[1, 1], [1, 1]] * x_1 + [[1, 0], [0, 0]] * x_2 4.87/2.17 >>> 4.87/2.17 4.87/2.17 <<< 4.87/2.17 POL(nil) = [[0], [1]] 4.87/2.17 >>> 4.87/2.17 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 take(0, XS) -> nil 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (14) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (15) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 0: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(0) = 0 4.87/2.17 POL(cons(x_1, x_2)) = x_1 4.87/2.17 POL(incr(x_1)) = x_1 4.87/2.17 POL(oddNs) = 1 4.87/2.17 POL(pairNs) = 1 4.87/2.17 POL(s(x_1)) = x_1 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 pairNs -> cons(0, incr(oddNs)) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (16) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (17) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 cons: {1} 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 s: {1} 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(cons(x_1, x_2)) = 2 + x_1 4.87/2.17 POL(incr(x_1)) = 1 + 2*x_1 4.87/2.17 POL(oddNs) = 1 4.87/2.17 POL(pairNs) = 0 4.87/2.17 POL(s(x_1)) = x_1 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 incr(cons(X, XS)) -> cons(s(X), incr(XS)) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (18) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (19) CSRRRRProof (EQUIVALENT) 4.87/2.17 The following CSR is given: Context-sensitive rewrite system: 4.87/2.17 The TRS R consists of the following rules: 4.87/2.17 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 4.87/2.17 The replacement map contains the following entries: 4.87/2.17 4.87/2.17 pairNs: empty set 4.87/2.17 incr: {1} 4.87/2.17 oddNs: empty set 4.87/2.17 Used ordering: 4.87/2.17 Polynomial interpretation [POLO]: 4.87/2.17 4.87/2.17 POL(incr(x_1)) = 1 + 2*x_1 4.87/2.17 POL(oddNs) = 2 4.87/2.17 POL(pairNs) = 0 4.87/2.17 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 4.87/2.17 4.87/2.17 oddNs -> incr(pairNs) 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (20) 4.87/2.17 Obligation: 4.87/2.17 Context-sensitive rewrite system: 4.87/2.17 R is empty. 4.87/2.17 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (21) RisEmptyProof (EQUIVALENT) 4.87/2.17 The CSR R is empty. Hence, termination is trivially proven. 4.87/2.17 ---------------------------------------- 4.87/2.17 4.87/2.17 (22) 4.87/2.17 YES 4.87/2.19 EOF