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 QDPOrderProof (⇔)
↳34 QDP
↳35 PisEmptyProof (⇔)
↳36 TRUE
↳37 QDP
↳38 QDPOrderProof (⇔)
↳39 QDP
↳40 QDPOrderProof (⇔)
↳41 QDP
↳42 PisEmptyProof (⇔)
↳43 TRUE
↳44 QDP
↳45 QDPOrderProof (⇔)
↳46 QDP
↳47 QDPOrderProof (⇔)
↳48 QDP
↳49 QDPOrderProof (⇔)
↳50 QDP
↳51 PisEmptyProof (⇔)
↳52 TRUE
↳53 QDP
↳54 QDPOrderProof (⇔)
↳55 QDP
↳56 DependencyGraphProof (⇔)
↳57 QDP
↳58 QDPOrderProof (⇔)
↳59 QDP
↳60 PisEmptyProof (⇔)
↳61 TRUE
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
ACTIVE(fst(0, Z)) → MARK(nil)
ACTIVE(fst(s(X), cons(Y, Z))) → MARK(cons(Y, fst(X, Z)))
ACTIVE(fst(s(X), cons(Y, Z))) → CONS(Y, fst(X, Z))
ACTIVE(fst(s(X), cons(Y, Z))) → FST(X, Z)
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
ACTIVE(from(X)) → CONS(X, from(s(X)))
ACTIVE(from(X)) → FROM(s(X))
ACTIVE(from(X)) → S(X)
ACTIVE(add(0, X)) → MARK(X)
ACTIVE(add(s(X), Y)) → MARK(s(add(X, Y)))
ACTIVE(add(s(X), Y)) → S(add(X, Y))
ACTIVE(add(s(X), Y)) → ADD(X, Y)
ACTIVE(len(nil)) → MARK(0)
ACTIVE(len(cons(X, Z))) → MARK(s(len(Z)))
ACTIVE(len(cons(X, Z))) → S(len(Z))
ACTIVE(len(cons(X, Z))) → LEN(Z)
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
MARK(fst(X1, X2)) → FST(mark(X1), mark(X2))
MARK(fst(X1, X2)) → MARK(X1)
MARK(fst(X1, X2)) → MARK(X2)
MARK(0) → ACTIVE(0)
MARK(nil) → ACTIVE(nil)
MARK(s(X)) → ACTIVE(s(X))
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
MARK(cons(X1, X2)) → CONS(mark(X1), X2)
MARK(cons(X1, X2)) → MARK(X1)
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(from(X)) → FROM(mark(X))
MARK(from(X)) → MARK(X)
MARK(add(X1, X2)) → ACTIVE(add(mark(X1), mark(X2)))
MARK(add(X1, X2)) → ADD(mark(X1), mark(X2))
MARK(add(X1, X2)) → MARK(X1)
MARK(add(X1, X2)) → MARK(X2)
MARK(len(X)) → ACTIVE(len(mark(X)))
MARK(len(X)) → LEN(mark(X))
MARK(len(X)) → MARK(X)
FST(mark(X1), X2) → FST(X1, X2)
FST(X1, mark(X2)) → FST(X1, X2)
FST(active(X1), X2) → FST(X1, X2)
FST(X1, active(X2)) → FST(X1, X2)
S(mark(X)) → S(X)
S(active(X)) → S(X)
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
FROM(mark(X)) → FROM(X)
FROM(active(X)) → FROM(X)
ADD(mark(X1), X2) → ADD(X1, X2)
ADD(X1, mark(X2)) → ADD(X1, X2)
ADD(active(X1), X2) → ADD(X1, X2)
ADD(X1, active(X2)) → ADD(X1, X2)
LEN(mark(X)) → LEN(X)
LEN(active(X)) → LEN(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
LEN(active(X)) → LEN(X)
LEN(mark(X)) → LEN(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LEN(active(X)) → LEN(X)
trivial
LEN(mark(X)) → LEN(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LEN(mark(X)) → LEN(X)
mark1 > LEN1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
ADD(X1, mark(X2)) → ADD(X1, X2)
ADD(mark(X1), X2) → ADD(X1, X2)
ADD(active(X1), X2) → ADD(X1, X2)
ADD(X1, active(X2)) → ADD(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ADD(X1, mark(X2)) → ADD(X1, X2)
ADD(X1, active(X2)) → ADD(X1, X2)
trivial
ADD(mark(X1), X2) → ADD(X1, X2)
ADD(active(X1), X2) → ADD(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ADD(mark(X1), X2) → ADD(X1, X2)
trivial
ADD(active(X1), X2) → ADD(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ADD(active(X1), X2) → ADD(X1, X2)
active1 > ADD1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
FROM(active(X)) → FROM(X)
FROM(mark(X)) → FROM(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FROM(active(X)) → FROM(X)
trivial
FROM(mark(X)) → FROM(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(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)
mark1 > FROM1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(X1, mark(X2)) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
trivial
CONS(mark(X1), X2) → CONS(X1, X2)
CONS(active(X1), X2) → CONS(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(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)
trivial
CONS(active(X1), X2) → CONS(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
CONS(active(X1), X2) → CONS(X1, X2)
active1 > CONS1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
S(active(X)) → S(X)
S(mark(X)) → S(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
S(active(X)) → S(X)
trivial
S(mark(X)) → S(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(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)
mark1 > S1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
FST(X1, mark(X2)) → FST(X1, X2)
FST(mark(X1), X2) → FST(X1, X2)
FST(active(X1), X2) → FST(X1, X2)
FST(X1, active(X2)) → FST(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FST(X1, mark(X2)) → FST(X1, X2)
FST(X1, active(X2)) → FST(X1, X2)
trivial
FST(mark(X1), X2) → FST(X1, X2)
FST(active(X1), X2) → FST(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FST(mark(X1), X2) → FST(X1, X2)
trivial
FST(active(X1), X2) → FST(X1, X2)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
FST(active(X1), X2) → FST(X1, X2)
active1 > FST1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
ACTIVE(fst(s(X), cons(Y, Z))) → MARK(cons(Y, fst(X, Z)))
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(fst(X1, X2)) → MARK(X1)
MARK(fst(X1, X2)) → MARK(X2)
MARK(s(X)) → ACTIVE(s(X))
ACTIVE(add(0, X)) → MARK(X)
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
ACTIVE(add(s(X), Y)) → MARK(s(add(X, Y)))
MARK(cons(X1, X2)) → MARK(X1)
MARK(from(X)) → ACTIVE(from(mark(X)))
ACTIVE(len(cons(X, Z))) → MARK(s(len(Z)))
MARK(from(X)) → MARK(X)
MARK(add(X1, X2)) → ACTIVE(add(mark(X1), mark(X2)))
MARK(add(X1, X2)) → MARK(X1)
MARK(add(X1, X2)) → MARK(X2)
MARK(len(X)) → ACTIVE(len(mark(X)))
MARK(len(X)) → MARK(X)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(fst(s(X), cons(Y, Z))) → MARK(cons(Y, fst(X, Z)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(fst(X1, X2)) → MARK(X1)
MARK(fst(X1, X2)) → MARK(X2)
ACTIVE(add(0, X)) → MARK(X)
ACTIVE(add(s(X), Y)) → MARK(s(add(X, Y)))
ACTIVE(len(cons(X, Z))) → MARK(s(len(Z)))
MARK(from(X)) → MARK(X)
MARK(add(X1, X2)) → MARK(X1)
MARK(add(X1, X2)) → MARK(X2)
MARK(len(X)) → MARK(X)
from1 > fst2
add2 > fst2
len1 > s > fst2
len1 > 0 > nil > fst2
fst(X1, mark(X2)) → fst(X1, X2)
fst(mark(X1), X2) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
active(from(X)) → mark(cons(X, from(s(X))))
mark(s(X)) → active(s(X))
active(add(0, X)) → mark(X)
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
active(add(s(X), Y)) → mark(s(add(X, Y)))
mark(from(X)) → active(from(mark(X)))
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
mark(0) → active(0)
mark(nil) → active(nil)
s(active(X)) → s(X)
s(mark(X)) → s(X)
from(active(X)) → from(X)
from(mark(X)) → from(X)
add(X1, mark(X2)) → add(X1, X2)
add(mark(X1), X2) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(active(X)) → len(X)
len(mark(X)) → len(X)
active(fst(0, Z)) → mark(nil)
active(len(nil)) → mark(0)
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
MARK(s(X)) → ACTIVE(s(X))
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
MARK(cons(X1, X2)) → MARK(X1)
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(add(X1, X2)) → ACTIVE(add(mark(X1), mark(X2)))
MARK(len(X)) → ACTIVE(len(mark(X)))
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
MARK(cons(X1, X2)) → MARK(X1)
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MARK(cons(X1, X2)) → MARK(X1)
cons2 > MARK1
active(fst(0, Z)) → mark(nil)
active(fst(s(X), cons(Y, Z))) → mark(cons(Y, fst(X, Z)))
active(from(X)) → mark(cons(X, from(s(X))))
active(add(0, X)) → mark(X)
active(add(s(X), Y)) → mark(s(add(X, Y)))
active(len(nil)) → mark(0)
active(len(cons(X, Z))) → mark(s(len(Z)))
mark(fst(X1, X2)) → active(fst(mark(X1), mark(X2)))
mark(0) → active(0)
mark(nil) → active(nil)
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(from(X)) → active(from(mark(X)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(len(X)) → active(len(mark(X)))
fst(mark(X1), X2) → fst(X1, X2)
fst(X1, mark(X2)) → fst(X1, X2)
fst(active(X1), X2) → fst(X1, X2)
fst(X1, active(X2)) → fst(X1, X2)
s(mark(X)) → s(X)
s(active(X)) → s(X)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
cons(X1, active(X2)) → cons(X1, X2)
from(mark(X)) → from(X)
from(active(X)) → from(X)
add(mark(X1), X2) → add(X1, X2)
add(X1, mark(X2)) → add(X1, X2)
add(active(X1), X2) → add(X1, X2)
add(X1, active(X2)) → add(X1, X2)
len(mark(X)) → len(X)
len(active(X)) → len(X)