0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 QDPOrderProof (⇔)
↳16 QDP
↳17 QDPOrderProof (⇔)
↳18 QDP
↳19 PisEmptyProof (⇔)
↳20 TRUE
↳21 QDP
↳22 QDPOrderProof (⇔)
↳23 QDP
↳24 QDPOrderProof (⇔)
↳25 QDP
↳26 PisEmptyProof (⇔)
↳27 TRUE
↳28 QDP
↳29 QDPOrderProof (⇔)
↳30 QDP
↳31 QDPOrderProof (⇔)
↳32 QDP
↳33 PisEmptyProof (⇔)
↳34 TRUE
↳35 QDP
↳36 QDPOrderProof (⇔)
↳37 QDP
↳38 QDPOrderProof (⇔)
↳39 QDP
↳40 PisEmptyProof (⇔)
↳41 TRUE
↳42 QDP
↳43 QDPOrderProof (⇔)
↳44 QDP
↳45 QDPOrderProof (⇔)
↳46 QDP
↳47 QDPOrderProof (⇔)
↳48 QDP
↳49 PisEmptyProof (⇔)
↳50 TRUE
↳51 QDP
↳52 QDPOrderProof (⇔)
↳53 QDP
↳54 QDPOrderProof (⇔)
↳55 QDP
↳56 PisEmptyProof (⇔)
↳57 TRUE
↳58 QDP
↳59 QDPOrderProof (⇔)
↳60 QDP
↳61 QDPOrderProof (⇔)
↳62 QDP
↳63 PisEmptyProof (⇔)
↳64 TRUE
↳65 QDP
↳66 QDPOrderProof (⇔)
↳67 QDP
↳68 QDPOrderProof (⇔)
↳69 QDP
↳70 PisEmptyProof (⇔)
↳71 TRUE
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(app(cons(X, XS), YS)) → CONS(X, app(XS, YS))
ACTIVE(app(cons(X, XS), YS)) → APP(XS, YS)
ACTIVE(from(X)) → CONS(X, from(s(X)))
ACTIVE(from(X)) → FROM(s(X))
ACTIVE(from(X)) → S(X)
ACTIVE(zWadr(cons(X, XS), cons(Y, YS))) → CONS(app(Y, cons(X, nil)), zWadr(XS, YS))
ACTIVE(zWadr(cons(X, XS), cons(Y, YS))) → APP(Y, cons(X, nil))
ACTIVE(zWadr(cons(X, XS), cons(Y, YS))) → CONS(X, nil)
ACTIVE(zWadr(cons(X, XS), cons(Y, YS))) → ZWADR(XS, YS)
ACTIVE(prefix(L)) → CONS(nil, zWadr(L, prefix(L)))
ACTIVE(prefix(L)) → ZWADR(L, prefix(L))
ACTIVE(app(X1, X2)) → APP(active(X1), X2)
ACTIVE(app(X1, X2)) → ACTIVE(X1)
ACTIVE(app(X1, X2)) → APP(X1, active(X2))
ACTIVE(app(X1, X2)) → ACTIVE(X2)
ACTIVE(cons(X1, X2)) → CONS(active(X1), X2)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(from(X)) → FROM(active(X))
ACTIVE(from(X)) → ACTIVE(X)
ACTIVE(s(X)) → S(active(X))
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(zWadr(X1, X2)) → ZWADR(active(X1), X2)
ACTIVE(zWadr(X1, X2)) → ACTIVE(X1)
ACTIVE(zWadr(X1, X2)) → ZWADR(X1, active(X2))
ACTIVE(zWadr(X1, X2)) → ACTIVE(X2)
ACTIVE(prefix(X)) → PREFIX(active(X))
ACTIVE(prefix(X)) → ACTIVE(X)
APP(mark(X1), X2) → APP(X1, X2)
APP(X1, mark(X2)) → APP(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
FROM(mark(X)) → FROM(X)
S(mark(X)) → S(X)
ZWADR(mark(X1), X2) → ZWADR(X1, X2)
ZWADR(X1, mark(X2)) → ZWADR(X1, X2)
PREFIX(mark(X)) → PREFIX(X)
PROPER(app(X1, X2)) → APP(proper(X1), proper(X2))
PROPER(app(X1, X2)) → PROPER(X1)
PROPER(app(X1, X2)) → PROPER(X2)
PROPER(cons(X1, X2)) → CONS(proper(X1), proper(X2))
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(from(X)) → FROM(proper(X))
PROPER(from(X)) → PROPER(X)
PROPER(s(X)) → S(proper(X))
PROPER(s(X)) → PROPER(X)
PROPER(zWadr(X1, X2)) → ZWADR(proper(X1), proper(X2))
PROPER(zWadr(X1, X2)) → PROPER(X1)
PROPER(zWadr(X1, X2)) → PROPER(X2)
PROPER(prefix(X)) → PREFIX(proper(X))
PROPER(prefix(X)) → PROPER(X)
APP(ok(X1), ok(X2)) → APP(X1, X2)
CONS(ok(X1), ok(X2)) → CONS(X1, X2)
FROM(ok(X)) → FROM(X)
S(ok(X)) → S(X)
ZWADR(ok(X1), ok(X2)) → ZWADR(X1, X2)
PREFIX(ok(X)) → PREFIX(X)
TOP(mark(X)) → TOP(proper(X))
TOP(mark(X)) → PROPER(X)
TOP(ok(X)) → TOP(active(X))
TOP(ok(X)) → ACTIVE(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PREFIX(ok(X)) → PREFIX(X)
PREFIX(mark(X)) → PREFIX(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
PREFIX(ok(X)) → PREFIX(X)
proper1 > [ok1, from1, prefix1] > [nil, top]
ok1: [1]
nil: []
from1: [1]
prefix1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PREFIX(mark(X)) → PREFIX(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
PREFIX(mark(X)) → PREFIX(X)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZWADR(X1, mark(X2)) → ZWADR(X1, X2)
ZWADR(mark(X1), X2) → ZWADR(X1, X2)
ZWADR(ok(X1), ok(X2)) → ZWADR(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
ZWADR(ok(X1), ok(X2)) → ZWADR(X1, X2)
proper1 > [ok1, app1, prefix1] > [ZWADR2, nil, top]
ZWADR2: [2,1]
ok1: [1]
app1: [1]
nil: []
prefix1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZWADR(X1, mark(X2)) → ZWADR(X1, X2)
ZWADR(mark(X1), X2) → ZWADR(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
ZWADR(X1, mark(X2)) → ZWADR(X1, X2)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [2,1]
nil: []
cons1: [1]
from1: [1]
zWadr2: [1,2]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ZWADR(mark(X1), X2) → ZWADR(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
ZWADR(mark(X1), X2) → ZWADR(X1, X2)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
S(ok(X)) → S(X)
S(mark(X)) → S(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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)
proper1 > [ok1, from1, prefix1] > [nil, top]
ok1: [1]
nil: []
from1: [1]
prefix1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
S(mark(X)) → S(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(mark(X)) → S(X)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
FROM(ok(X)) → FROM(X)
FROM(mark(X)) → FROM(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
FROM(ok(X)) → FROM(X)
proper1 > [ok1, from1, prefix1] > [nil, top]
ok1: [1]
nil: []
from1: [1]
prefix1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
FROM(mark(X)) → FROM(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
FROM(mark(X)) → FROM(X)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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)
nil > [ok1, mark, app1, cons1, zWadr1, proper1, top]
ok1: [1]
mark: []
app1: [1]
nil: []
cons1: [1]
zWadr1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
CONS(mark(X1), X2) → CONS(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
APP(X1, mark(X2)) → APP(X1, X2)
APP(mark(X1), X2) → APP(X1, X2)
APP(ok(X1), ok(X2)) → APP(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
APP(ok(X1), ok(X2)) → APP(X1, X2)
proper1 > [ok1, app1, prefix1] > [APP2, nil, top]
APP2: [2,1]
ok1: [1]
app1: [1]
nil: []
prefix1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
APP(X1, mark(X2)) → APP(X1, X2)
APP(mark(X1), X2) → APP(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
APP(X1, mark(X2)) → APP(X1, X2)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [2,1]
nil: []
cons1: [1]
from1: [1]
zWadr2: [1,2]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
APP(mark(X1), X2) → APP(X1, X2)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
APP(mark(X1), X2) → APP(X1, X2)
[app2, zWadr2] > cons1 > [mark1, nil, ok, top]
from1 > cons1 > [mark1, nil, ok, top]
prefix1 > cons1 > [mark1, nil, ok, top]
mark1: [1]
app2: [1,2]
nil: []
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(app(X1, X2)) → PROPER(X2)
PROPER(app(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(from(X)) → PROPER(X)
PROPER(s(X)) → PROPER(X)
PROPER(zWadr(X1, X2)) → PROPER(X1)
PROPER(zWadr(X1, X2)) → PROPER(X2)
PROPER(prefix(X)) → PROPER(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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(app(X1, X2)) → PROPER(X2)
PROPER(app(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X1)
PROPER(cons(X1, X2)) → PROPER(X2)
PROPER(from(X)) → PROPER(X)
PROPER(zWadr(X1, X2)) → PROPER(X1)
PROPER(zWadr(X1, X2)) → PROPER(X2)
PROPER(prefix(X)) → PROPER(X)
[PROPER1, app2] > cons2 > [zWadr2, prefix1] > [nil, mark, ok, top]
from1 > cons2 > [zWadr2, prefix1] > [nil, mark, ok, top]
PROPER1: [1]
app2: [1,2]
cons2: [1,2]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
nil: []
mark: []
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
PROPER(s(X)) → PROPER(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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)
s1 > [PROPER1, app2, nil, cons, zWadr2, ok, top]
from1 > [PROPER1, app2, nil, cons, zWadr2, ok, top]
PROPER1: [1]
s1: [1]
app2: [1,2]
nil: []
cons: []
from1: [1]
zWadr2: [2,1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(app(X1, X2)) → ACTIVE(X2)
ACTIVE(app(X1, X2)) → ACTIVE(X1)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(from(X)) → ACTIVE(X)
ACTIVE(s(X)) → ACTIVE(X)
ACTIVE(zWadr(X1, X2)) → ACTIVE(X1)
ACTIVE(zWadr(X1, X2)) → ACTIVE(X2)
ACTIVE(prefix(X)) → ACTIVE(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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(app(X1, X2)) → ACTIVE(X2)
ACTIVE(app(X1, X2)) → ACTIVE(X1)
ACTIVE(cons(X1, X2)) → ACTIVE(X1)
ACTIVE(from(X)) → ACTIVE(X)
ACTIVE(zWadr(X1, X2)) → ACTIVE(X1)
ACTIVE(zWadr(X1, X2)) → ACTIVE(X2)
ACTIVE(prefix(X)) → ACTIVE(X)
ACTIVE1 > [app2, cons1, nil, mark, top]
from1 > [app2, cons1, nil, mark, top]
[zWadr2, prefix1] > [app2, cons1, nil, mark, top]
ACTIVE1: [1]
app2: [1,2]
cons1: [1]
from1: [1]
zWadr2: [2,1]
prefix1: [1]
nil: []
mark: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
ACTIVE(s(X)) → ACTIVE(X)
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(s(X)) → ACTIVE(X)
s1 > [ACTIVE1, app2, nil, cons, zWadr2, ok, top]
from1 > [ACTIVE1, app2, nil, cons, zWadr2, ok, top]
ACTIVE1: [1]
s1: [1]
app2: [1,2]
nil: []
cons: []
from1: [1]
zWadr2: [2,1]
ok: []
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
TOP(mark(X)) → TOP(proper(X))
TOP1 > [nil, top]
from1 > mark1 > [nil, top]
prefix1 > zWadr2 > app2 > mark1 > [nil, top]
TOP1: [1]
mark1: [1]
app2: [2,1]
nil: []
from1: [1]
zWadr2: [2,1]
prefix1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
TOP(ok(X)) → TOP(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(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.
TOP(ok(X)) → TOP(active(X))
[ok1, app1, nil, mark, cons1, zWadr1, proper1, top]
ok1: [1]
app1: [1]
nil: []
mark: []
cons1: [1]
zWadr1: [1]
proper1: [1]
top: []
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(app(nil, YS)) → mark(YS)
active(app(cons(X, XS), YS)) → mark(cons(X, app(XS, YS)))
active(from(X)) → mark(cons(X, from(s(X))))
active(zWadr(nil, YS)) → mark(nil)
active(zWadr(XS, nil)) → mark(nil)
active(zWadr(cons(X, XS), cons(Y, YS))) → mark(cons(app(Y, cons(X, nil)), zWadr(XS, YS)))
active(prefix(L)) → mark(cons(nil, zWadr(L, prefix(L))))
active(app(X1, X2)) → app(active(X1), X2)
active(app(X1, X2)) → app(X1, active(X2))
active(cons(X1, X2)) → cons(active(X1), X2)
active(from(X)) → from(active(X))
active(s(X)) → s(active(X))
active(zWadr(X1, X2)) → zWadr(active(X1), X2)
active(zWadr(X1, X2)) → zWadr(X1, active(X2))
active(prefix(X)) → prefix(active(X))
app(mark(X1), X2) → mark(app(X1, X2))
app(X1, mark(X2)) → mark(app(X1, X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
from(mark(X)) → mark(from(X))
s(mark(X)) → mark(s(X))
zWadr(mark(X1), X2) → mark(zWadr(X1, X2))
zWadr(X1, mark(X2)) → mark(zWadr(X1, X2))
prefix(mark(X)) → mark(prefix(X))
proper(app(X1, X2)) → app(proper(X1), proper(X2))
proper(nil) → ok(nil)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(from(X)) → from(proper(X))
proper(s(X)) → s(proper(X))
proper(zWadr(X1, X2)) → zWadr(proper(X1), proper(X2))
proper(prefix(X)) → prefix(proper(X))
app(ok(X1), ok(X2)) → ok(app(X1, X2))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
from(ok(X)) → ok(from(X))
s(ok(X)) → ok(s(X))
zWadr(ok(X1), ok(X2)) → ok(zWadr(X1, X2))
prefix(ok(X)) → ok(prefix(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))