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 QDPOrderProof (⇔)
↳46 QDP
↳47 QDPOrderProof (⇔)
↳48 QDP
↳49 QDPOrderProof (⇔)
↳50 QDP
↳51 QDPOrderProof (⇔)
↳52 QDP
↳53 QDPOrderProof (⇔)
↳54 QDP
↳55 PisEmptyProof (⇔)
↳56 TRUE
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
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(length(nil)) → MARK(0)
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
ACTIVE(length(cons(X, Y))) → S(length1(Y))
ACTIVE(length(cons(X, Y))) → LENGTH1(Y)
ACTIVE(length1(X)) → MARK(length(X))
ACTIVE(length1(X)) → LENGTH(X)
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(from(X)) → FROM(mark(X))
MARK(from(X)) → MARK(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(s(X)) → ACTIVE(s(mark(X)))
MARK(s(X)) → S(mark(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(nil) → ACTIVE(nil)
MARK(0) → ACTIVE(0)
MARK(length1(X)) → ACTIVE(length1(X))
FROM(mark(X)) → FROM(X)
FROM(active(X)) → FROM(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)
S(mark(X)) → S(X)
S(active(X)) → S(X)
LENGTH(mark(X)) → LENGTH(X)
LENGTH(active(X)) → LENGTH(X)
LENGTH1(mark(X)) → LENGTH1(X)
LENGTH1(active(X)) → LENGTH1(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
LENGTH1(active(X)) → LENGTH1(X)
LENGTH1(mark(X)) → LENGTH1(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LENGTH1(active(X)) → LENGTH1(X)
active1 > LENGTH1
LENGTH1: multiset
active1: multiset
LENGTH1(mark(X)) → LENGTH1(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LENGTH1(mark(X)) → LENGTH1(X)
[LENGTH1, mark1]
LENGTH1: multiset
mark1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
LENGTH(active(X)) → LENGTH(X)
LENGTH(mark(X)) → LENGTH(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LENGTH(active(X)) → LENGTH(X)
active1 > LENGTH
LENGTH: multiset
active1: multiset
LENGTH(mark(X)) → LENGTH(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LENGTH(mark(X)) → LENGTH(X)
[LENGTH, mark1]
LENGTH: multiset
mark1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
S(active(X)) → S(X)
S(mark(X)) → S(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
active1 > S
S: multiset
active1: multiset
S(mark(X)) → S(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
[S, mark1]
S: multiset
mark1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
trivial
mark1: [1]
CONS(active(X1), X2) → CONS(X1, X2)
CONS(X1, active(X2)) → CONS(X1, X2)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
trivial
active1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
FROM(active(X)) → FROM(X)
FROM(mark(X)) → FROM(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
active1 > FROM
FROM: multiset
active1: multiset
FROM(mark(X)) → FROM(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
[FROM, mark1]
FROM: multiset
mark1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
MARK(from(X)) → ACTIVE(from(mark(X)))
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(from(X)) → MARK(X)
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
MARK(cons(X1, X2)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(from(X)) → MARK(cons(X, from(s(X))))
MARK(from(X)) → MARK(X)
[length, length1] > MARK1 > from1
[length, length1] > 0
nil > 0
MARK1: multiset
from1: [1]
length: []
length1: []
nil: multiset
0: multiset
mark(from(X)) → active(from(mark(X)))
active(from(X)) → mark(cons(X, from(s(X))))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
active(length(cons(X, Y))) → mark(s(length1(Y)))
mark(s(X)) → active(s(mark(X)))
active(length1(X)) → mark(length(X))
mark(length(X)) → active(length(X))
mark(length1(X)) → active(length1(X))
mark(nil) → active(nil)
mark(0) → active(0)
from(active(X)) → from(X)
from(mark(X)) → from(X)
s(active(X)) → s(X)
s(mark(X)) → s(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)
length1(active(X)) → length1(X)
length1(mark(X)) → length1(X)
length(active(X)) → length(X)
length(mark(X)) → length(X)
active(length(nil)) → mark(0)
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
MARK(cons(X1, X2)) → MARK(X1)
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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)
MARK > cons1
MARK > [length, length1] > 0
from1 > cons1
MARK: multiset
from1: multiset
cons1: [1]
length: []
length1: []
nil: multiset
0: multiset
mark(from(X)) → active(from(mark(X)))
active(from(X)) → mark(cons(X, from(s(X))))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
active(length(cons(X, Y))) → mark(s(length1(Y)))
mark(s(X)) → active(s(mark(X)))
active(length1(X)) → mark(length(X))
mark(length(X)) → active(length(X))
mark(length1(X)) → active(length1(X))
mark(nil) → active(nil)
mark(0) → active(0)
from(active(X)) → from(X)
from(mark(X)) → from(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)
length1(active(X)) → length1(X)
length1(mark(X)) → length1(X)
s(active(X)) → s(X)
s(mark(X)) → s(X)
length(active(X)) → length(X)
length(mark(X)) → length(X)
active(length(nil)) → mark(0)
MARK(from(X)) → ACTIVE(from(mark(X)))
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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, ACTIVE, length1, length11] > from
[MARK, ACTIVE, length1, length11] > 0
nil > 0
MARK: multiset
from: []
ACTIVE: []
length1: multiset
length11: multiset
nil: multiset
0: multiset
MARK(cons(X1, X2)) → ACTIVE(cons(mark(X1), X2))
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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))
from1 > mark1 > active1 > [cons1, ACTIVE, length, length1, 0]
nil > mark1 > active1 > [cons1, ACTIVE, length, length1, 0]
cons1: [1]
ACTIVE: multiset
mark1: multiset
length: multiset
length1: multiset
from1: [1]
active1: multiset
nil: multiset
0: multiset
length1(active(X)) → length1(X)
length1(mark(X)) → length1(X)
s(active(X)) → s(X)
s(mark(X)) → s(X)
length(active(X)) → length(X)
length(mark(X)) → length(X)
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
MARK(s(X)) → ACTIVE(s(mark(X)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(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(mark(X)))
[ACTIVE, length, MARK, length1] > [cons2, s, mark, 0] > from1
nil > [cons2, s, mark, 0] > from1
ACTIVE: multiset
length: multiset
cons2: multiset
MARK: multiset
s: []
length1: multiset
mark: []
from1: multiset
nil: multiset
0: multiset
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(s(X)) → MARK(X)
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ACTIVE(length(cons(X, Y))) → MARK(s(length1(Y)))
ACTIVE(length1(X)) → MARK(length(X))
MARK(length(X)) → ACTIVE(length(X))
MARK(length1(X)) → ACTIVE(length1(X))
[ACTIVE1, cons2, MARK1] > length11
ACTIVE1: [1]
cons2: multiset
MARK1: [1]
length11: [1]
active1: multiset
length1(active(X)) → length1(X)
length1(mark(X)) → length1(X)
s(active(X)) → s(X)
s(mark(X)) → s(X)
length(active(X)) → length(X)
length(mark(X)) → length(X)
MARK(s(X)) → MARK(X)
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MARK(s(X)) → MARK(X)
[MARK, s1]
MARK: multiset
s1: multiset
active(from(X)) → mark(cons(X, from(s(X))))
active(length(nil)) → mark(0)
active(length(cons(X, Y))) → mark(s(length1(Y)))
active(length1(X)) → mark(length(X))
mark(from(X)) → active(from(mark(X)))
mark(cons(X1, X2)) → active(cons(mark(X1), X2))
mark(s(X)) → active(s(mark(X)))
mark(length(X)) → active(length(X))
mark(nil) → active(nil)
mark(0) → active(0)
mark(length1(X)) → active(length1(X))
from(mark(X)) → from(X)
from(active(X)) → from(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)
s(mark(X)) → s(X)
s(active(X)) → s(X)
length(mark(X)) → length(X)
length(active(X)) → length(X)
length1(mark(X)) → length1(X)
length1(active(X)) → length1(X)