(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

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))

Q is empty.

(1) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(2) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(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)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(3) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 11 SCCs with 35 less nodes.

(4) Complex Obligation (AND)

(5) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REPITEMS(ok(X)) → REPITEMS(X)
REPITEMS(mark(X)) → REPITEMS(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(6) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


REPITEMS(ok(X)) → REPITEMS(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
REPITEMS(x1)  =  x1
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > repItems1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > repItems1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
0: []
oddNs: []
nil: []
repItems1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(7) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REPITEMS(mark(X)) → REPITEMS(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(8) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


REPITEMS(mark(X)) → REPITEMS(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
REPITEMS(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > cons2 > incr1 > mark1
top > active1 > cons2 > take2 > mark1
top > active1 > cons2 > zip2 > mark1
top > active1 > cons2 > repItems1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > nil > mark1
top > active1 > pair2 > mark1

Status:
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(9) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(10) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(11) TRUE

(12) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(13) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


TAIL(ok(X)) → TAIL(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
TAIL(x1)  =  x1
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > repItems1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > repItems1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
0: []
oddNs: []
nil: []
repItems1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(14) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TAIL(mark(X)) → TAIL(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(15) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


TAIL(mark(X)) → TAIL(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
TAIL(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > cons2 > incr1 > mark1
top > active1 > cons2 > take2 > mark1
top > active1 > cons2 > zip2 > mark1
top > active1 > cons2 > repItems1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > nil > mark1
top > active1 > pair2 > mark1

Status:
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(16) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(17) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(18) TRUE

(19) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PAIR(X1, mark(X2)) → PAIR(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)
PAIR(ok(X1), ok(X2)) → PAIR(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(20) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PAIR(ok(X1), ok(X2)) → PAIR(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PAIR(x1, x2)  =  x2
mark(x1)  =  x1
ok(x1)  =  ok(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x2)
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > cons1 > ok1
top > active1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > cons1 > ok1
top > proper1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
cons1: [1]
0: []
oddNs: []
nil: []
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(21) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PAIR(X1, mark(X2)) → PAIR(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(22) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PAIR(X1, mark(X2)) → PAIR(X1, X2)
PAIR(mark(X1), X2) → PAIR(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PAIR(x1, x2)  =  PAIR(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
PAIR2 > mark1
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > take2 > cons2 > incr1 > mark1
top > active1 > take2 > cons2 > zip2 > mark1
top > active1 > take2 > cons2 > repItems1 > mark1
top > active1 > take2 > nil > mark1
top > active1 > pair2 > mark1

Status:
PAIR2: [1,2]
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(23) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(24) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(25) TRUE

(26) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ZIP(X1, mark(X2)) → ZIP(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)
ZIP(ok(X1), ok(X2)) → ZIP(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(27) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ZIP(ok(X1), ok(X2)) → ZIP(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ZIP(x1, x2)  =  x2
mark(x1)  =  x1
ok(x1)  =  ok(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x2)
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > cons1 > ok1
top > active1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > cons1 > ok1
top > proper1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
cons1: [1]
0: []
oddNs: []
nil: []
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(28) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ZIP(X1, mark(X2)) → ZIP(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(29) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ZIP(X1, mark(X2)) → ZIP(X1, X2)
ZIP(mark(X1), X2) → ZIP(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ZIP(x1, x2)  =  ZIP(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
ZIP2 > mark1
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > take2 > cons2 > incr1 > mark1
top > active1 > take2 > cons2 > zip2 > mark1
top > active1 > take2 > cons2 > repItems1 > mark1
top > active1 > take2 > nil > mark1
top > active1 > pair2 > mark1

Status:
ZIP2: [1,2]
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(30) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(31) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(32) TRUE

(33) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
TAKE(ok(X1), ok(X2)) → TAKE(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(34) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


TAKE(ok(X1), ok(X2)) → TAKE(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
TAKE(x1, x2)  =  x2
mark(x1)  =  x1
ok(x1)  =  ok(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x2)
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > cons1 > ok1
top > active1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > cons1 > ok1
top > proper1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
cons1: [1]
0: []
oddNs: []
nil: []
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(35) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(36) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


TAKE(X1, mark(X2)) → TAKE(X1, X2)
TAKE(mark(X1), X2) → TAKE(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
TAKE(x1, x2)  =  TAKE(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
TAKE2 > mark1
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > take2 > cons2 > incr1 > mark1
top > active1 > take2 > cons2 > zip2 > mark1
top > active1 > take2 > cons2 > repItems1 > mark1
top > active1 > take2 > nil > mark1
top > active1 > pair2 > mark1

Status:
TAKE2: [1,2]
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(37) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(38) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(39) TRUE

(40) Obligation:

Q DP problem:
The TRS P consists of the following rules:

S(ok(X)) → S(X)
S(mark(X)) → S(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(41) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


S(ok(X)) → S(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
S(x1)  =  x1
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > repItems1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > repItems1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
0: []
oddNs: []
nil: []
repItems1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(42) Obligation:

Q DP problem:
The TRS P consists of the following rules:

S(mark(X)) → S(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(43) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


S(mark(X)) → S(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
S(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > cons2 > incr1 > mark1
top > active1 > cons2 > take2 > mark1
top > active1 > cons2 > zip2 > mark1
top > active1 > cons2 > repItems1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > nil > mark1
top > active1 > pair2 > mark1

Status:
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(44) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(45) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(46) TRUE

(47) Obligation:

Q DP problem:
The TRS P consists of the following rules:

INCR(ok(X)) → INCR(X)
INCR(mark(X)) → INCR(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(48) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


INCR(ok(X)) → INCR(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
INCR(x1)  =  x1
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0
top > active1 > pairNs > oddNs
top > active1 > repItems1 > nil > ok1
top > proper1 > pairNs > 0
top > proper1 > pairNs > oddNs
top > proper1 > repItems1 > nil > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
0: []
oddNs: []
nil: []
repItems1: [1]
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(49) Obligation:

Q DP problem:
The TRS P consists of the following rules:

INCR(mark(X)) → INCR(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(50) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


INCR(mark(X)) → INCR(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
INCR(x1)  =  x1
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > cons2 > incr1 > mark1
top > active1 > cons2 > take2 > mark1
top > active1 > cons2 > zip2 > mark1
top > active1 > cons2 > repItems1 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > nil > mark1
top > active1 > pair2 > mark1

Status:
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(51) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(52) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(53) TRUE

(54) Obligation:

Q DP problem:
The TRS P consists of the following rules:

CONS(ok(X1), ok(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(55) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


CONS(ok(X1), ok(X2)) → CONS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
CONS(x1, x2)  =  x2
ok(x1)  =  ok(x1)
mark(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  x1
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
tail(x1)  =  x1
repItems(x1)  =  x1
proper(x1)  =  proper(x1)
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
top > active1 > pairNs > 0 > ok1
top > active1 > oddNs > ok1
top > active1 > nil > ok1
top > proper1 > 0 > ok1

Status:
ok1: [1]
active1: [1]
pairNs: []
0: []
oddNs: []
nil: []
proper1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(56) Obligation:

Q DP problem:
The TRS P consists of the following rules:

CONS(mark(X1), X2) → CONS(X1, X2)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(57) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


CONS(mark(X1), X2) → CONS(X1, X2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
CONS(x1, x2)  =  CONS(x1, x2)
mark(x1)  =  mark(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
cons(x1, x2)  =  cons(x1, x2)
0  =  0
incr(x1)  =  incr(x1)
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
nil  =  nil
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  x1
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
CONS2 > mark1
top > active1 > pairNs > 0 > mark1
top > active1 > pairNs > incr1 > mark1
top > active1 > cons2 > incr1 > mark1
top > active1 > cons2 > take2 > mark1
top > active1 > cons2 > zip2 > mark1
top > active1 > oddNs > incr1 > mark1
top > active1 > nil > mark1
top > active1 > pair2 > mark1

Status:
CONS2: [1,2]
mark1: [1]
active1: [1]
pairNs: []
cons2: [1,2]
0: []
incr1: [1]
oddNs: []
take2: [1,2]
nil: []
zip2: [1,2]
pair2: [1,2]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(58) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(59) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(60) TRUE

(61) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(62) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


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)
PROPER(repItems(X)) → PROPER(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PROPER(x1)  =  PROPER(x1)
cons(x1, x2)  =  cons(x1, x2)
incr(x1)  =  incr(x1)
s(x1)  =  x1
take(x1, x2)  =  take(x1, x2)
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
active(x1)  =  x1
pairNs  =  pairNs
mark(x1)  =  mark
0  =  0
oddNs  =  oddNs
nil  =  nil
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
PROPER1 > mark
incr1 > cons2 > mark
take2 > cons2 > mark
zip2 > cons2 > mark
zip2 > pair2 > mark
repItems1 > cons2 > mark
pairNs > mark
0 > mark
oddNs > mark
nil > mark
top > mark

Status:
PROPER1: [1]
cons2: [1,2]
incr1: [1]
take2: [2,1]
zip2: [1,2]
pair2: [2,1]
repItems1: [1]
pairNs: []
mark: []
0: []
oddNs: []
nil: []
top: []

The following usable rules [FROCOS05] were oriented:

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))

(63) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PROPER(s(X)) → PROPER(X)
PROPER(tail(X)) → PROPER(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(64) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PROPER(s(X)) → PROPER(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PROPER(x1)  =  x1
s(x1)  =  s(x1)
tail(x1)  =  x1
active(x1)  =  active(x1)
pairNs  =  pairNs
mark(x1)  =  x1
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  incr
oddNs  =  oddNs
take(x1, x2)  =  x2
nil  =  nil
zip(x1, x2)  =  x2
pair(x1, x2)  =  x2
repItems(x1)  =  repItems(x1)
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
active1 > s1 > incr
active1 > pairNs > 0 > incr
active1 > oddNs > incr
active1 > nil > incr
active1 > repItems1 > incr
top > incr

Status:
s1: [1]
active1: [1]
pairNs: []
0: []
incr: []
oddNs: []
nil: []
repItems1: [1]
top: []

The following usable rules [FROCOS05] were oriented:

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))

(65) Obligation:

Q DP problem:
The TRS P consists of the following rules:

PROPER(tail(X)) → PROPER(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(66) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PROPER(tail(X)) → PROPER(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
PROPER(x1)  =  x1
tail(x1)  =  tail(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
mark(x1)  =  x1
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  incr
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1)
nil  =  nil
zip(x1, x2)  =  zip
pair(x1, x2)  =  pair
repItems(x1)  =  repItems
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
zip > active1 > tail1 > incr
zip > active1 > pairNs > incr
zip > active1 > 0 > incr
zip > active1 > oddNs > incr
zip > active1 > take1 > incr
zip > active1 > nil > incr
pair > active1 > tail1 > incr
pair > active1 > pairNs > incr
pair > active1 > 0 > incr
pair > active1 > oddNs > incr
pair > active1 > take1 > incr
pair > active1 > nil > incr
repItems > active1 > tail1 > incr
repItems > active1 > pairNs > incr
repItems > active1 > 0 > incr
repItems > active1 > oddNs > incr
repItems > active1 > take1 > incr
repItems > active1 > nil > incr
top > active1 > tail1 > incr
top > active1 > pairNs > incr
top > active1 > 0 > incr
top > active1 > oddNs > incr
top > active1 > take1 > incr
top > active1 > nil > incr

Status:
tail1: [1]
active1: [1]
pairNs: []
0: []
incr: []
oddNs: []
take1: [1]
nil: []
zip: []
pair: []
repItems: []
top: []

The following usable rules [FROCOS05] were oriented:

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))

(67) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(68) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(69) TRUE

(70) Obligation:

Q DP problem:
The TRS P consists of the following rules:

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)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(71) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


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(repItems(X)) → ACTIVE(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  x1
incr(x1)  =  incr(x1)
cons(x1, x2)  =  cons(x1)
s(x1)  =  s(x1)
take(x1, x2)  =  take(x1, x2)
zip(x1, x2)  =  zip(x1, x2)
pair(x1, x2)  =  pair(x1, x2)
tail(x1)  =  x1
repItems(x1)  =  repItems(x1)
active(x1)  =  x1
pairNs  =  pairNs
mark(x1)  =  mark
0  =  0
oddNs  =  oddNs
nil  =  nil
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
cons1 > incr1 > s1 > mark
cons1 > take2 > mark
cons1 > zip2 > pair2 > mark
cons1 > repItems1 > mark
pairNs > mark
0 > mark
oddNs > mark
nil > mark
top > mark

Status:
incr1: [1]
cons1: [1]
s1: [1]
take2: [1,2]
zip2: [1,2]
pair2: [1,2]
repItems1: [1]
pairNs: []
mark: []
0: []
oddNs: []
nil: []
top: []

The following usable rules [FROCOS05] were oriented:

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))

(72) Obligation:

Q DP problem:
The TRS P consists of the following rules:

ACTIVE(tail(X)) → ACTIVE(X)

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(73) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


ACTIVE(tail(X)) → ACTIVE(X)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
ACTIVE(x1)  =  x1
tail(x1)  =  tail(x1)
active(x1)  =  active(x1)
pairNs  =  pairNs
mark(x1)  =  x1
cons(x1, x2)  =  x2
0  =  0
incr(x1)  =  incr
oddNs  =  oddNs
s(x1)  =  x1
take(x1, x2)  =  take(x1)
nil  =  nil
zip(x1, x2)  =  zip
pair(x1, x2)  =  pair
repItems(x1)  =  repItems
proper(x1)  =  x1
ok(x1)  =  x1
top(x1)  =  top

Lexicographic path order with status [LPO].
Precedence:
zip > active1 > tail1 > incr
zip > active1 > pairNs > incr
zip > active1 > 0 > incr
zip > active1 > oddNs > incr
zip > active1 > take1 > incr
zip > active1 > nil > incr
pair > active1 > tail1 > incr
pair > active1 > pairNs > incr
pair > active1 > 0 > incr
pair > active1 > oddNs > incr
pair > active1 > take1 > incr
pair > active1 > nil > incr
repItems > active1 > tail1 > incr
repItems > active1 > pairNs > incr
repItems > active1 > 0 > incr
repItems > active1 > oddNs > incr
repItems > active1 > take1 > incr
repItems > active1 > nil > incr
top > active1 > tail1 > incr
top > active1 > pairNs > incr
top > active1 > 0 > incr
top > active1 > oddNs > incr
top > active1 > take1 > incr
top > active1 > nil > incr

Status:
tail1: [1]
active1: [1]
pairNs: []
0: []
incr: []
oddNs: []
take1: [1]
nil: []
zip: []
pair: []
repItems: []
top: []

The following usable rules [FROCOS05] were oriented:

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))

(74) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(75) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(76) TRUE

(77) Obligation:

Q DP problem:
The TRS P consists of the following rules:

TOP(ok(X)) → TOP(active(X))
TOP(mark(X)) → TOP(proper(X))

The TRS R consists of the following rules:

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))

Q is empty.
We have to consider all minimal (P,Q,R)-chains.