0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 QDPOrderProof (⇔)
↳16 QDP
↳17 PisEmptyProof (⇔)
↳18 TRUE
↳19 QDP
↳20 QDPOrderProof (⇔)
↳21 QDP
↳22 QDPOrderProof (⇔)
↳23 QDP
↳24 PisEmptyProof (⇔)
↳25 TRUE
↳26 QDP
↳27 QDPOrderProof (⇔)
↳28 QDP
↳29 QDPOrderProof (⇔)
↳30 QDP
↳31 PisEmptyProof (⇔)
↳32 TRUE
↳33 QDP
↳34 QDPOrderProof (⇔)
↳35 QDP
↳36 QDPOrderProof (⇔)
↳37 QDP
↳38 PisEmptyProof (⇔)
↳39 TRUE
↳40 QDP
↳41 QDPOrderProof (⇔)
↳42 QDP
↳43 QDPOrderProof (⇔)
↳44 QDP
↳45 PisEmptyProof (⇔)
↳46 TRUE
↳47 QDP
↳48 QDPOrderProof (⇔)
↳49 QDP
↳50 QDPOrderProof (⇔)
↳51 QDP
↳52 QDPOrderProof (⇔)
↳53 QDP
↳54 QDPOrderProof (⇔)
↳55 QDP
↳56 QDPOrderProof (⇔)
↳57 QDP
↳58 PisEmptyProof (⇔)
↳59 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)
[LEN1, active1]
active1: [1]
LEN1: [1]
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)
trivial
mark1: [1]
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(mark(X1), X2) → ADD(X1, X2)
[ADD2, mark1]
mark1: [1]
ADD2: [2,1]
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(active(X1), X2) → ADD(X1, X2)
ADD(X1, active(X2)) → ADD(X1, X2)
[ADD2, active1]
active1: [1]
ADD2: [2,1]
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)
[FROM1, active1]
active1: [1]
FROM1: [1]
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)
trivial
mark1: [1]
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(mark(X1), X2) → CONS(X1, X2)
[CONS2, mark1]
CONS2: [2,1]
mark1: [1]
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(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
[CONS2, active1]
active1: [1]
CONS2: [2,1]
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)
[S1, active1]
active1: [1]
S1: [1]
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)
trivial
mark1: [1]
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(mark(X1), X2) → FST(X1, X2)
[FST2, mark1]
FST2: [2,1]
mark1: [1]
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(active(X1), X2) → FST(X1, X2)
FST(X1, active(X2)) → FST(X1, X2)
[FST2, active1]
active1: [1]
FST2: [2,1]
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.
MARK(s(X)) → ACTIVE(s(X))
nil > [fst, cons, MARK, from, add, len, active] > 0 > s
from: []
active: []
MARK: []
cons: []
add: []
len: []
fst: []
s: []
0: []
nil: []
len(active(X)) → len(X)
len(mark(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)
from(active(X)) → from(X)
from(mark(X)) → from(X)
cons(X1, active(X2)) → cons(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(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(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)
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.
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
nil > 0 > [fst, MARK, from, add, len] > [cons, mark1]
from: []
MARK: []
cons: []
add: []
len: []
mark1: [1]
fst: []
0: []
nil: []
len(active(X)) → len(X)
len(mark(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)
from(active(X)) → from(X)
from(mark(X)) → from(X)
cons(X1, active(X2)) → cons(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
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(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)
ACTIVE(add(0, X)) → MARK(X)
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)))
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)))
MARK(cons(X1, X2)) → MARK(X1)
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)
[ACTIVE1, fst2, cons1, MARK1, from1, add2] > [s, len1] > 0
[ACTIVE1, fst2, cons1, MARK1, from1, add2] > nil > 0
from1: [1]
add2: [2,1]
cons1: [1]
MARK1: [1]
fst2: [1,2]
s: []
0: []
ACTIVE1: [1]
nil: []
len1: [1]
len(active(X)) → len(X)
len(mark(X)) → len(X)
active(fst(0, Z)) → mark(nil)
active(add(0, X)) → mark(X)
active(from(X)) → mark(cons(X, from(s(X))))
mark(s(X)) → active(s(X))
mark(cons(X1, X2)) → active(cons(mark(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(add(s(X), Y)) → mark(s(add(X, Y)))
mark(add(X1, X2)) → active(add(mark(X1), mark(X2)))
mark(from(X)) → active(from(mark(X)))
mark(len(X)) → active(len(mark(X)))
active(len(cons(X, Z))) → mark(s(len(Z)))
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)
from(active(X)) → from(X)
from(mark(X)) → from(X)
cons(X1, active(X2)) → cons(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
s(active(X)) → s(X)
s(mark(X)) → s(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)
mark(nil) → active(nil)
mark(0) → active(0)
active(len(nil)) → mark(0)
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
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)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(len(X)) → ACTIVE(len(mark(X)))
from > mark > len1 > [fst, ACTIVE, cons, add, active] > nil
0 > mark > len1 > [fst, ACTIVE, cons, add, active] > nil
from: []
active: []
cons: []
add: []
mark: []
fst: []
0: []
nil: []
ACTIVE: []
len1: [1]
cons(X1, active(X2)) → cons(X1, X2)
cons(mark(X1), X2) → cons(X1, X2)
cons(X1, mark(X2)) → cons(X1, X2)
cons(active(X1), X2) → cons(X1, X2)
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(add(X1, X2)) → ACTIVE(add(mark(X1), mark(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.
MARK(fst(X1, X2)) → ACTIVE(fst(mark(X1), mark(X2)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(add(X1, X2)) → ACTIVE(add(mark(X1), mark(X2)))
from1 > MARK > [fst, ACTIVE1, add] > mark > [active, nil]
from1 > cons2 > [fst, ACTIVE1, add] > mark > [active, nil]
0 > mark > [active, nil]
active: []
MARK: []
from1: [1]
cons2: [2,1]
add: []
mark: []
fst: []
0: []
ACTIVE1: [1]
nil: []
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)
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)