0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 PisEmptyProof (⇔)
↳9 TRUE
↳10 QDP
↳11 QDPOrderProof (⇔)
↳12 QDP
↳13 PisEmptyProof (⇔)
↳14 TRUE
↳15 QDP
↳16 QDPOrderProof (⇔)
↳17 QDP
↳18 PisEmptyProof (⇔)
↳19 TRUE
↳20 QDP
↳21 QDPOrderProof (⇔)
↳22 QDP
↳23 PisEmptyProof (⇔)
↳24 TRUE
↳25 QDP
↳26 QDPOrderProof (⇔)
↳27 QDP
↳28 QDPOrderProof (⇔)
↳29 QDP
↳30 PisEmptyProof (⇔)
↳31 TRUE
↳32 QDP
↳33 QDPOrderProof (⇔)
↳34 QDP
↳35 QDPOrderProof (⇔)
↳36 QDP
↳37 QDPOrderProof (⇔)
↳38 QDP
↳39 PisEmptyProof (⇔)
↳40 TRUE
↳41 QDP
↳42 QDPOrderProof (⇔)
↳43 QDP
↳44 QDPOrderProof (⇔)
↳45 QDP
↳46 PisEmptyProof (⇔)
↳47 TRUE
↳48 QDP
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(nats) → CONS(0, incr(nats))
ACTIVE(nats) → INCR(nats)
ACTIVE(pairs) → CONS(0, incr(odds))
ACTIVE(pairs) → INCR(odds)
ACTIVE(odds) → INCR(pairs)
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(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(head(X)) → HEAD(active(X))
ACTIVE(head(X)) → ACTIVE(X)
ACTIVE(tail(X)) → TAIL(active(X))
ACTIVE(tail(X)) → ACTIVE(X)
CONS(mark(X1), X2) → CONS(X1, X2)
INCR(mark(X)) → INCR(X)
S(mark(X)) → S(X)
HEAD(mark(X)) → HEAD(X)
TAIL(mark(X)) → TAIL(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(head(X)) → HEAD(proper(X))
PROPER(head(X)) → PROPER(X)
PROPER(tail(X)) → TAIL(proper(X))
PROPER(tail(X)) → PROPER(X)
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
INCR(ok(X)) → INCR(X)
S(ok(X)) → S(X)
HEAD(ok(X)) → HEAD(X)
TAIL(ok(X)) → TAIL(X)
TOP(mark(X)) → TOP(proper(X))
TOP(mark(X)) → PROPER(X)
TOP(ok(X)) → TOP(active(X))
TOP(ok(X)) → ACTIVE(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TAIL(ok(X)) → TAIL(X)
TAIL(mark(X)) → TAIL(X)
proper1 > nats
proper1 > cons2 > ok1
proper1 > cons2 > mark1
proper1 > 0
proper1 > odds > ok1
proper1 > odds > mark1
proper1 > odds > pairs
proper1 > head1 > ok1
proper1 > head1 > mark1
top > active1 > nats
top > active1 > cons2 > ok1
top > active1 > cons2 > mark1
top > active1 > 0
top > active1 > odds > ok1
top > active1 > odds > mark1
top > active1 > odds > pairs
top > active1 > head1 > ok1
top > active1 > head1 > mark1
head1: [1]
pairs: []
ok1: [1]
mark1: [1]
0: []
active1: [1]
cons2: [2,1]
odds: []
nats: []
proper1: [1]
TAIL1: [1]
top: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
HEAD(ok(X)) → HEAD(X)
HEAD(mark(X)) → HEAD(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
HEAD(ok(X)) → HEAD(X)
HEAD(mark(X)) → HEAD(X)
proper1 > nats
proper1 > cons2 > ok1
proper1 > cons2 > mark1
proper1 > 0
proper1 > odds > ok1
proper1 > odds > mark1
proper1 > odds > pairs
proper1 > head1 > ok1
proper1 > head1 > mark1
top > active1 > nats
top > active1 > cons2 > ok1
top > active1 > cons2 > mark1
top > active1 > 0
top > active1 > odds > ok1
top > active1 > odds > mark1
top > active1 > odds > pairs
top > active1 > head1 > ok1
top > active1 > head1 > mark1
head1: [1]
pairs: []
ok1: [1]
mark1: [1]
0: []
HEAD1: [1]
active1: [1]
cons2: [2,1]
odds: []
nats: []
proper1: [1]
top: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
S(ok(X)) → S(X)
S(mark(X)) → S(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(ok(X)) → S(X)
S(mark(X)) → S(X)
proper1 > nats
proper1 > cons2 > ok1
proper1 > cons2 > mark1
proper1 > 0
proper1 > odds > ok1
proper1 > odds > mark1
proper1 > odds > pairs
proper1 > head1 > ok1
proper1 > head1 > mark1
top > active1 > nats
top > active1 > cons2 > ok1
top > active1 > cons2 > mark1
top > active1 > 0
top > active1 > odds > ok1
top > active1 > odds > mark1
top > active1 > odds > pairs
top > active1 > head1 > ok1
top > active1 > head1 > mark1
head1: [1]
pairs: []
ok1: [1]
mark1: [1]
0: []
active1: [1]
cons2: [2,1]
odds: []
nats: []
proper1: [1]
top: []
S1: [1]
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
INCR(ok(X)) → INCR(X)
INCR(mark(X)) → INCR(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
INCR(ok(X)) → INCR(X)
INCR(mark(X)) → INCR(X)
proper1 > nats
proper1 > cons2 > ok1
proper1 > cons2 > mark1
proper1 > 0
proper1 > odds > ok1
proper1 > odds > mark1
proper1 > odds > pairs
proper1 > head1 > ok1
proper1 > head1 > mark1
top > active1 > nats
top > active1 > cons2 > ok1
top > active1 > cons2 > mark1
top > active1 > 0
top > active1 > odds > ok1
top > active1 > odds > mark1
top > active1 > odds > pairs
top > active1 > head1 > ok1
top > active1 > head1 > mark1
head1: [1]
pairs: []
ok1: [1]
mark1: [1]
0: []
active1: [1]
cons2: [2,1]
odds: []
nats: []
proper1: [1]
top: []
INCR1: [1]
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
CONS1 > top
active1 > nats > top
active1 > 0 > ok1 > top
active1 > pairs > cons2 > ok1 > top
active1 > pairs > incr1 > ok1 > top
active1 > pairs > odds > ok1 > top
proper1 > nats > top
proper1 > 0 > ok1 > top
proper1 > pairs > cons2 > ok1 > top
proper1 > pairs > incr1 > ok1 > top
proper1 > pairs > odds > ok1 > top
active1: [1]
cons2: [1,2]
odds: []
incr1: [1]
CONS1: [1]
pairs: []
ok1: [1]
nats: []
proper1: [1]
top: []
0: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(mark(X1), X2) → CONS(X1, X2)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(mark(X1), X2) → CONS(X1, X2)
active1 > pairs > cons2 > mark1 > top
active1 > pairs > cons2 > ok > top
active1 > pairs > 0
active1 > pairs > odds
nats > cons2 > mark1 > top
nats > cons2 > ok > top
nats > 0
proper1 > pairs > cons2 > mark1 > top
proper1 > pairs > cons2 > ok > top
proper1 > pairs > 0
proper1 > pairs > odds
active1: [1]
cons2: [2,1]
odds: []
pairs: []
mark1: [1]
ok: []
nats: []
proper1: [1]
top: []
0: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(incr(X)) → PROPER(X)
PROPER(s(X)) → PROPER(X)
PROPER(head(X)) → PROPER(X)
PROPER(tail(X)) → PROPER(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(incr(X)) → PROPER(X)
PROPER(tail(X)) → PROPER(X)
PROPER1 > incr1
0 > ok > incr1
proper1 > tail1 > mark > cons2 > incr1
proper1 > tail1 > ok > incr1
proper1 > nats > mark > cons2 > incr1
proper1 > nats > ok > incr1
proper1 > pairs > mark > cons2 > incr1
proper1 > pairs > ok > incr1
proper1 > odds > mark > cons2 > incr1
proper1 > odds > ok > incr1
top > active1 > tail1 > mark > cons2 > incr1
top > active1 > tail1 > ok > incr1
PROPER1: [1]
tail1: [1]
pairs: []
0: []
odds: []
active1: [1]
cons2: [2,1]
incr1: [1]
mark: []
ok: []
proper1: [1]
nats: []
top: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
PROPER(head(X)) → PROPER(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(head(X)) → PROPER(X)
nats > mark > proper1 > head1 > PROPER1
nats > mark > top > PROPER1
nats > ok > head1 > PROPER1
nats > ok > top > PROPER1
0 > ok > head1 > PROPER1
0 > ok > top > PROPER1
odds > pairs > cons > mark > proper1 > head1 > PROPER1
odds > pairs > cons > mark > top > PROPER1
odds > pairs > cons > ok > head1 > PROPER1
odds > pairs > cons > ok > top > PROPER1
PROPER1: [1]
odds: []
cons: []
head1: [1]
mark: []
pairs: []
ok: []
nats: []
proper1: [1]
top: []
0: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
PROPER(s(X)) → PROPER(X)
nats > 0 > ok > s1 > mark > cons1
nats > 0 > ok > top > cons1
incr > active1 > s1 > mark > cons1
incr > proper1 > s1 > mark > cons1
incr > ok > s1 > mark > cons1
incr > ok > top > cons1
pairs > ok > s1 > mark > cons1
pairs > ok > top > cons1
odds > ok > s1 > mark > cons1
odds > ok > top > cons1
cons1: [1]
incr: []
pairs: []
0: []
active1: [1]
odds: []
mark: []
s1: [1]
ok: []
nats: []
proper1: [1]
top: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(head(X)) → ACTIVE(X)
ACTIVE(tail(X)) → ACTIVE(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
cons1 > ACTIVE1 > top
cons1 > mark > top
nats > mark > top
0 > top
pairs > mark > top
odds > mark > top
odds: []
cons1: [1]
pairs: []
mark: []
nats: []
top: []
0: []
ACTIVE1: [1]
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(head(X)) → ACTIVE(X)
ACTIVE(tail(X)) → ACTIVE(X)
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(incr(X)) → ACTIVE(X)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(head(X)) → ACTIVE(X)
ACTIVE(tail(X)) → ACTIVE(X)
nats > cons2 > incr1 > s1
nats > cons2 > mark > head1 > s1
nats > ok > incr1 > s1
nats > ok > head1 > s1
0 > ok > incr1 > s1
0 > ok > head1 > s1
top > proper1 > tail1 > ACTIVE1 > s1
top > proper1 > tail1 > mark > head1 > s1
top > proper1 > cons2 > incr1 > s1
top > proper1 > cons2 > mark > head1 > s1
top > proper1 > pairs > incr1 > s1
top > proper1 > pairs > mark > head1 > s1
top > proper1 > odds > incr1 > s1
top > proper1 > odds > mark > head1 > s1
top > proper1 > ok > incr1 > s1
top > proper1 > ok > head1 > s1
tail1: [1]
head1: [1]
pairs: []
0: []
ACTIVE1: [1]
odds: []
cons2: [2,1]
incr1: [1]
mark: []
ok: []
s1: [1]
proper1: [1]
nats: []
top: []
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TOP(ok(X)) → TOP(active(X))
TOP(mark(X)) → TOP(proper(X))
active(nats) → mark(cons(0, incr(nats)))
active(pairs) → mark(cons(0, incr(odds)))
active(odds) → mark(incr(pairs))
active(incr(cons(X, XS))) → mark(cons(s(X), incr(XS)))
active(head(cons(X, XS))) → mark(X)
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(incr(X)) → incr(active(X))
active(s(X)) → s(active(X))
active(head(X)) → head(active(X))
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
incr(mark(X)) → mark(incr(X))
s(mark(X)) → mark(s(X))
head(mark(X)) → mark(head(X))
tail(mark(X)) → mark(tail(X))
proper(nats) → ok(nats)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(incr(X)) → incr(proper(X))
proper(pairs) → ok(pairs)
proper(odds) → ok(odds)
proper(s(X)) → s(proper(X))
proper(head(X)) → head(proper(X))
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
incr(ok(X)) → ok(incr(X))
s(ok(X)) → ok(s(X))
head(ok(X)) → ok(head(X))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))