nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats: empty set
adx: {1}
zeros: empty set
cons: empty set
0: empty set
incr: {1}
s: empty set
hd: {1}
tl: {1}
↳ CSR
↳ CSRInnermostProof
nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats: empty set
adx: {1}
zeros: empty set
cons: empty set
0: empty set
incr: {1}
s: empty set
hd: {1}
tl: {1}
The CSR is orthogonal. By [10] we can switch to innermost.
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats: empty set
adx: {1}
zeros: empty set
cons: empty set
0: empty set
incr: {1}
s: empty set
hd: {1}
tl: {1}
Innermost Strategy.
Using Improved CS-DPs we result in the following initial Q-CSDP problem.
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
NATS → ADX(zeros)
NATS → ZEROS
ADX(cons(X, Y)) → INCR(cons(X, adx(Y)))
HD(cons(X, Y)) → X
TL(cons(X, Y)) → Y
zeros
incr(Y)
incr on positions {1}
adx on positions {1}
HD(cons(X, Y)) → U(X)
TL(cons(X, Y)) → U(Y)
U(incr(x_0)) → U(x_0)
U(adx(x_0)) → U(x_0)
U(zeros) → ZEROS
U(incr(Y)) → INCR(Y)
nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats
zeros
incr(cons(x0, x1))
adx(cons(x0, x1))
hd(cons(x0, x1))
tl(cons(x0, x1))
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ QCSDP
↳ QCSDPSubtermProof
U(incr(x_0)) → U(x_0)
U(adx(x_0)) → U(x_0)
nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats
zeros
incr(cons(x0, x1))
adx(cons(x0, x1))
hd(cons(x0, x1))
tl(cons(x0, x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
U(incr(x_0)) → U(x_0)
U(adx(x_0)) → U(x_0)
↳ CSR
↳ CSRInnermostProof
↳ CSR
↳ CSDependencyPairsProof
↳ QCSDP
↳ QCSDependencyGraphProof
↳ QCSDP
↳ QCSDPSubtermProof
↳ QCSDP
↳ PIsEmptyProof
nats → adx(zeros)
zeros → cons(0, zeros)
incr(cons(X, Y)) → cons(s(X), incr(Y))
adx(cons(X, Y)) → incr(cons(X, adx(Y)))
hd(cons(X, Y)) → X
tl(cons(X, Y)) → Y
nats
zeros
incr(cons(x0, x1))
adx(cons(x0, x1))
hd(cons(x0, x1))
tl(cons(x0, x1))