0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 QDPOrderProof (⇔)
↳16 QDP
↳17 PisEmptyProof (⇔)
↳18 TRUE
↳19 QDP
↳20 QDPOrderProof (⇔)
↳21 QDP
↳22 QDPOrderProof (⇔)
↳23 QDP
↳24 QDPOrderProof (⇔)
↳25 QDP
↳26 PisEmptyProof (⇔)
↳27 TRUE
↳28 QDP
↳29 QDPOrderProof (⇔)
↳30 QDP
↳31 QDPOrderProof (⇔)
↳32 QDP
↳33 QDPOrderProof (⇔)
↳34 QDP
↳35 PisEmptyProof (⇔)
↳36 TRUE
↳37 QDP
↳38 QDPOrderProof (⇔)
↳39 QDP
↳40 QDPOrderProof (⇔)
↳41 QDP
↳42 QDPOrderProof (⇔)
↳43 QDP
↳44 PisEmptyProof (⇔)
↳45 TRUE
↳46 QDP
↳47 QDPOrderProof (⇔)
↳48 QDP
↳49 QDPOrderProof (⇔)
↳50 QDP
↳51 PisEmptyProof (⇔)
↳52 TRUE
↳53 QDP
↳54 QDPOrderProof (⇔)
↳55 QDP
↳56 QDPOrderProof (⇔)
↳57 QDP
↳58 PisEmptyProof (⇔)
↳59 TRUE
↳60 QDP
↳61 QDPOrderProof (⇔)
↳62 QDP
↳63 QDPOrderProof (⇔)
↳64 QDP
↳65 PisEmptyProof (⇔)
↳66 TRUE
↳67 QDP
↳68 QDPOrderProof (⇔)
↳69 QDP
↳70 QDPOrderProof (⇔)
↳71 QDP
↳72 QDPOrderProof (⇔)
↳73 QDP
↳74 QDPOrderProof (⇔)
↳75 QDP
↳76 PisEmptyProof (⇔)
↳77 TRUE
↳78 QDP
↳79 QDPOrderProof (⇔)
↳80 QDP
↳81 QDPOrderProof (⇔)
↳82 QDP
↳83 QDPOrderProof (⇔)
↳84 QDP
↳85 QDPOrderProof (⇔)
↳86 QDP
↳87 QDPOrderProof (⇔)
↳88 QDP
↳89 PisEmptyProof (⇔)
↳90 TRUE
↳91 QDP
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(pairNs) → CONS(0, incr(oddNs))
ACTIVE(pairNs) → INCR(oddNs)
ACTIVE(oddNs) → INCR(pairNs)
ACTIVE(incr(cons(X, XS))) → CONS(s(X), incr(XS))
ACTIVE(incr(cons(X, XS))) → S(X)
ACTIVE(incr(cons(X, XS))) → INCR(XS)
ACTIVE(take(s(N), cons(X, XS))) → CONS(X, take(N, XS))
ACTIVE(take(s(N), cons(X, XS))) → TAKE(N, XS)
ACTIVE(zip(cons(X, XS), cons(Y, YS))) → CONS(pair(X, Y), zip(XS, YS))
ACTIVE(zip(cons(X, XS), cons(Y, YS))) → PAIR(X, Y)
ACTIVE(zip(cons(X, XS), cons(Y, YS))) → ZIP(XS, YS)
ACTIVE(repItems(cons(X, XS))) → CONS(X, cons(X, repItems(XS)))
ACTIVE(repItems(cons(X, XS))) → CONS(X, repItems(XS))
ACTIVE(repItems(cons(X, XS))) → REPITEMS(XS)
ACTIVE(cons(X1, X2)) → CONS(active(X1), X2)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(incr(X)) → INCR(active(X))
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(s(X)) → S(active(X))
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(take(X1, X2)) → TAKE(active(X1), X2)
ACTIVE(take(X1, X2)) → ACTIVE(X1)
ACTIVE(take(X1, X2)) → TAKE(X1, active(X2))
ACTIVE(take(X1, X2)) → ACTIVE(X2)
ACTIVE(zip(X1, X2)) → ZIP(active(X1), X2)
ACTIVE(zip(X1, X2)) → ACTIVE(X1)
ACTIVE(zip(X1, X2)) → ZIP(X1, active(X2))
ACTIVE(zip(X1, X2)) → ACTIVE(X2)
ACTIVE(pair(X1, X2)) → PAIR(active(X1), X2)
ACTIVE(pair(X1, X2)) → ACTIVE(X1)
ACTIVE(pair(X1, X2)) → PAIR(X1, active(X2))
ACTIVE(pair(X1, X2)) → ACTIVE(X2)
ACTIVE(tail(X)) → TAIL(active(X))
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(repItems(X)) → REPITEMS(active(X))
ACTIVE(repItems(X)) → ACTIVE(X)
CONS(mark(X1), X2) → CONS(X1, X2)
INCR(mark(X)) → INCR(X)
S(mark(X)) → S(X)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(X1, mark(X2)) → TAKE(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)
ZIP(X1, mark(X2)) → ZIP(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)
PAIR(X1, mark(X2)) → PAIR(X1, X2)
TAIL(mark(X)) → TAIL(X)
REPITEMS(mark(X)) → REPITEMS(X)
PROPER(cons(X1, X2)) → CONS(proper(X1), proper(X2))
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(incr(X)) → INCR(proper(X))
PROPER(incr(X)) → PROPER(X)
PROPER(s(X)) → S(proper(X))
PROPER(s(X)) → PROPER(X)
PROPER(take(X1, X2)) → TAKE(proper(X1), proper(X2))
PROPER(take(X1, X2)) → PROPER(X1)
PROPER(take(X1, X2)) → PROPER(X2)
PROPER(zip(X1, X2)) → ZIP(proper(X1), proper(X2))
PROPER(zip(X1, X2)) → PROPER(X1)
PROPER(zip(X1, X2)) → PROPER(X2)
PROPER(pair(X1, X2)) → PAIR(proper(X1), proper(X2))
PROPER(pair(X1, X2)) → PROPER(X1)
PROPER(pair(X1, X2)) → PROPER(X2)
PROPER(tail(X)) → TAIL(proper(X))
PROPER(tail(X)) → PROPER(X)
PROPER(repItems(X)) → REPITEMS(proper(X))
PROPER(repItems(X)) → PROPER(X)
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
INCR(ok(X)) → INCR(X)
S(ok(X)) → S(X)
TAKE(ok(X1), ok(X2)) → TAKE(X1, X2)
ZIP(ok(X1), ok(X2)) → ZIP(X1, X2)
PAIR(ok(X1), ok(X2)) → PAIR(X1, X2)
TAIL(ok(X)) → TAIL(X)
REPITEMS(ok(X)) → REPITEMS(X)
TOP(mark(X)) → TOP(proper(X))
TOP(mark(X)) → PROPER(X)
TOP(ok(X)) → TOP(active(X))
TOP(ok(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
REPITEMS(ok(X)) → REPITEMS(X)
REPITEMS(mark(X)) → REPITEMS(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REPITEMS(ok(X)) → REPITEMS(X)
[active1, 0, proper1] > oddNs > pairNs > [ok1, incr1, zip1, pair1, repItems1, top] > nil
[active1, 0, proper1] > s1 > [ok1, incr1, zip1, pair1, repItems1, top] > nil
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
REPITEMS(mark(X)) → REPITEMS(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REPITEMS(mark(X)) → REPITEMS(X)
[active1, proper1, top] > pairNs > cons2 > [REPITEMS1, mark1]
[active1, proper1, top] > pairNs > 0 > [REPITEMS1, mark1]
[active1, proper1, top] > pairNs > oddNs > [REPITEMS1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > cons2 > [REPITEMS1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > pair2 > [REPITEMS1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > cons2 > [REPITEMS1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > pair2 > [REPITEMS1, mark1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAIL(ok(X)) → TAIL(X)
[active1, 0, proper1] > oddNs > pairNs > [ok1, incr1, zip1, pair1, repItems1, top] > nil
[active1, 0, proper1] > s1 > [ok1, incr1, zip1, pair1, repItems1, top] > nil
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAIL(mark(X)) → TAIL(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAIL(mark(X)) → TAIL(X)
[active1, proper1, top] > pairNs > cons2 > [TAIL1, mark1]
[active1, proper1, top] > pairNs > 0 > [TAIL1, mark1]
[active1, proper1, top] > pairNs > oddNs > [TAIL1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > cons2 > [TAIL1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > pair2 > [TAIL1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > cons2 > [TAIL1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > pair2 > [TAIL1, mark1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PAIR(X1, mark(X2)) → PAIR(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)
PAIR(ok(X1), ok(X2)) → PAIR(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PAIR(ok(X1), ok(X2)) → PAIR(X1, X2)
PAIR1 > [pairNs, 0, nil]
active1 > [cons2, oddNs, tail1, proper1, top] > [ok1, s1] > [pairNs, 0, nil]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PAIR(X1, mark(X2)) → PAIR(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PAIR(mark(X1), X2) → PAIR(X1, X2)
[active1, pair2] > [pairNs, cons2, zip2] > 0 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > oddNs
[active1, pair2] > [pairNs, cons2, zip2] > take2 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > nil > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > repItems1 > [mark1, incr1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PAIR(X1, mark(X2)) → PAIR(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PAIR(X1, mark(X2)) → PAIR(X1, X2)
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > PAIR1
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > top
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > PAIR1
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > PAIR1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > PAIR1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > top
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZIP(X1, mark(X2)) → ZIP(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)
ZIP(ok(X1), ok(X2)) → ZIP(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ZIP(ok(X1), ok(X2)) → ZIP(X1, X2)
ZIP1 > [pairNs, 0, nil]
active1 > [cons2, oddNs, tail1, proper1, top] > [ok1, s1] > [pairNs, 0, nil]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZIP(X1, mark(X2)) → ZIP(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ZIP(mark(X1), X2) → ZIP(X1, X2)
[active1, pair2] > [pairNs, cons2, zip2] > 0 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > oddNs
[active1, pair2] > [pairNs, cons2, zip2] > take2 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > nil > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > repItems1 > [mark1, incr1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZIP(X1, mark(X2)) → ZIP(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ZIP(X1, mark(X2)) → ZIP(X1, X2)
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > ZIP1
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > top
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > ZIP1
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > ZIP1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > ZIP1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > top
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(ok(X1), ok(X2)) → TAKE(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAKE(ok(X1), ok(X2)) → TAKE(X1, X2)
TAKE1 > [pairNs, 0, nil]
active1 > [cons2, oddNs, tail1, proper1, top] > [ok1, s1] > [pairNs, 0, nil]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAKE(mark(X1), X2) → TAKE(X1, X2)
[active1, pair2] > [pairNs, cons2, zip2] > 0 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > oddNs
[active1, pair2] > [pairNs, cons2, zip2] > take2 > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > nil > [mark1, incr1]
[active1, pair2] > [pairNs, cons2, zip2] > repItems1 > [mark1, incr1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAKE(X1, mark(X2)) → TAKE(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAKE(X1, mark(X2)) → TAKE(X1, X2)
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > TAKE1
[active1, zip2, pair2, repItems1] > cons2 > incr1 > mark1 > top
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > TAKE1
[active1, zip2, pair2, repItems1] > cons2 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > TAKE1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > 0 > [take2, nil] > mark1 > top
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > TAKE1
[active1, zip2, pair2, repItems1] > oddNs > pairNs > incr1 > mark1 > top
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
S(ok(X)) → S(X)
S(mark(X)) → S(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(ok(X)) → S(X)
[active1, 0, proper1] > oddNs > pairNs > [ok1, incr1, zip1, pair1, repItems1, top] > nil
[active1, 0, proper1] > s1 > [ok1, incr1, zip1, pair1, repItems1, top] > nil
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
S(mark(X)) → S(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(mark(X)) → S(X)
[active1, proper1, top] > pairNs > cons2 > [S1, mark1]
[active1, proper1, top] > pairNs > 0 > [S1, mark1]
[active1, proper1, top] > pairNs > oddNs > [S1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > cons2 > [S1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > pair2 > [S1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > cons2 > [S1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > pair2 > [S1, mark1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
INCR(ok(X)) → INCR(X)
INCR(mark(X)) → INCR(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
INCR(ok(X)) → INCR(X)
[active1, 0, proper1] > oddNs > pairNs > [ok1, incr1, zip1, pair1, repItems1, top] > nil
[active1, 0, proper1] > s1 > [ok1, incr1, zip1, pair1, repItems1, top] > nil
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
INCR(mark(X)) → INCR(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
INCR(mark(X)) → INCR(X)
[active1, proper1, top] > pairNs > cons2 > [INCR1, mark1]
[active1, proper1, top] > pairNs > 0 > [INCR1, mark1]
[active1, proper1, top] > pairNs > oddNs > [INCR1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > cons2 > [INCR1, mark1]
[active1, proper1, top] > [take2, nil] > [zip2, ok] > pair2 > [INCR1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > cons2 > [INCR1, mark1]
[active1, proper1, top] > tail1 > [zip2, ok] > pair2 > [INCR1, mark1]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
[proper, top] > [ok1, active1, nil] > [pairNs, oddNs] > mark
[proper, top] > [ok1, active1, nil] > 0 > mark
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(mark(X1), X2) → CONS(X1, X2)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(mark(X1), X2) → CONS(X1, X2)
[active1, pairNs, take2, nil, repItems1] > [cons2, zip2] > pair2 > [oddNs, ok] > tail1 > mark1
[active1, pairNs, take2, nil, repItems1] > 0 > [oddNs, ok] > tail1 > mark1
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(incr(X)) → PROPER(X)
PROPER(s(X)) → PROPER(X)
PROPER(take(X1, X2)) → PROPER(X1)
PROPER(take(X1, X2)) → PROPER(X2)
PROPER(zip(X1, X2)) → PROPER(X1)
PROPER(zip(X1, X2)) → PROPER(X2)
PROPER(pair(X1, X2)) → PROPER(X1)
PROPER(pair(X1, X2)) → PROPER(X2)
PROPER(tail(X)) → PROPER(X)
PROPER(repItems(X)) → PROPER(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(incr(X)) → PROPER(X)
PROPER(take(X1, X2)) → PROPER(X1)
PROPER(take(X1, X2)) → PROPER(X2)
PROPER(zip(X1, X2)) → PROPER(X1)
PROPER(zip(X1, X2)) → PROPER(X2)
PROPER(pair(X1, X2)) → PROPER(X1)
PROPER(pair(X1, X2)) → PROPER(X2)
[active1, pairNs, oddNs] > incr1 > cons2
[active1, pairNs, oddNs] > zip2 > [take2, nil] > cons2
[active1, pairNs, oddNs] > pair2 > cons2
[active1, pairNs, oddNs] > 0 > [take2, nil] > cons2
top > cons2
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
PROPER(tail(X)) → PROPER(X)
PROPER(repItems(X)) → PROPER(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(tail(X)) → PROPER(X)
nil > [pairNs, 0, oddNs, take, zip, ok] > [tail1, active1] > incr1 > mark
top > [tail1, active1] > incr1 > mark
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
PROPER(repItems(X)) → PROPER(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(repItems(X)) → PROPER(X)
cons > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [PROPER1, mark]
tail > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [PROPER1, mark]
top > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [PROPER1, mark]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(s(X)) → PROPER(X)
PROPER1 > [tail1, top]
oddNs > pairNs > 0 > [tail1, top]
oddNs > pairNs > incr > [tail1, top]
zip1 > [s1, take2, nil] > [tail1, top]
zip1 > pair > [tail1, top]
repItems1 > [s1, take2, nil] > [tail1, top]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(take(X1, X2)) → ACTIVE(X1)
ACTIVE(take(X1, X2)) → ACTIVE(X2)
ACTIVE(zip(X1, X2)) → ACTIVE(X1)
ACTIVE(zip(X1, X2)) → ACTIVE(X2)
ACTIVE(pair(X1, X2)) → ACTIVE(X1)
ACTIVE(pair(X1, X2)) → ACTIVE(X2)
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(repItems(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(take(X1, X2)) → ACTIVE(X1)
ACTIVE(take(X1, X2)) → ACTIVE(X2)
ACTIVE(zip(X1, X2)) → ACTIVE(X1)
ACTIVE(zip(X1, X2)) → ACTIVE(X2)
ACTIVE(pair(X1, X2)) → ACTIVE(X1)
ACTIVE(pair(X1, X2)) → ACTIVE(X2)
active1 > [pairNs, mark, 0, nil] > [take2, zip2, pair2, proper1, top]
oddNs > [pairNs, mark, 0, nil] > [take2, zip2, pair2, proper1, top]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(repItems(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(incr(X)) → ACTIVE(X)
active1 > [zip, proper1, top] > incr1 > [pairNs, mark, 0, oddNs, nil]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(tail(X)) → ACTIVE(X)
ACTIVE(repItems(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(tail(X)) → ACTIVE(X)
active1 > [cons2, pair1]
active1 > tail1
active1 > pairNs > 0
active1 > pairNs > oddNs
active1 > nil
proper1 > [cons2, pair1]
proper1 > tail1
proper1 > pairNs > 0
proper1 > pairNs > oddNs
proper1 > nil
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(repItems(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(repItems(X)) → ACTIVE(X)
cons > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [ACTIVE1, mark]
tail > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [ACTIVE1, mark]
top > [repItems1, pairNs, 0, oddNs, nil, zip, proper1] > take2 > [ACTIVE1, mark]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(s(X)) → ACTIVE(X)
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE1 > [tail1, top]
oddNs > pairNs > 0 > [tail1, top]
oddNs > pairNs > incr > [tail1, top]
zip1 > [s1, take2, nil] > [tail1, top]
zip1 > pair > [tail1, top]
repItems1 > [s1, take2, nil] > [tail1, top]
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TOP(ok(X)) → TOP(active(X))
TOP(mark(X)) → TOP(proper(X))
active(pairNs) → mark(cons(0, incr(oddNs)))
active(oddNs) → mark(incr(pairNs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(take(0, XS)) → mark(nil)
active(take(s(N), cons(X, XS))) → mark(cons(X, take(N, XS)))
active(zip(nil, XS)) → mark(nil)
active(zip(X, nil)) → mark(nil)
active(zip(cons(X, XS), cons(Y, YS))) → mark(cons(pair(X, Y), zip(XS, YS)))
active(tail(cons(X, XS))) → mark(XS)
active(repItems(nil)) → mark(nil)
active(repItems(cons(X, XS))) → mark(cons(X, cons(X, repItems(XS))))
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
active(zip(X1, X2)) → zip(active(X1), X2)
active(zip(X1, X2)) → zip(X1, active(X2))
active(pair(X1, X2)) → pair(active(X1), X2)
active(pair(X1, X2)) → pair(X1, active(X2))
active(tail(X)) → tail(active(X))
active(repItems(X)) → repItems(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
zip(mark(X1), X2) → mark(zip(X1, X2))
zip(X1, mark(X2)) → mark(zip(X1, X2))
pair(mark(X1), X2) → mark(pair(X1, X2))
pair(X1, mark(X2)) → mark(pair(X1, X2))
tail(mark(X)) → mark(tail(X))
repItems(mark(X)) → mark(repItems(X))
proper(pairNs) → ok(pairNs)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(oddNs) → ok(oddNs)
proper(s(X)) → s(proper(X))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(zip(X1, X2)) → zip(proper(X1), proper(X2))
proper(pair(X1, X2)) → pair(proper(X1), proper(X2))
proper(tail(X)) → tail(proper(X))
proper(repItems(X)) → repItems(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
zip(ok(X1), ok(X2)) → ok(zip(X1, X2))
pair(ok(X1), ok(X2)) → ok(pair(X1, X2))
tail(ok(X)) → ok(tail(X))
repItems(ok(X)) → ok(repItems(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))