(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
a__nats → a__adx(a__zeros)
a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))
a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)
a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__nats
mark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zeros
mark(incr(X)) → a__incr(mark(X))
mark(hd(X)) → a__hd(mark(X))
mark(tl(X)) → a__tl(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)
mark(0) → 0
mark(s(X)) → s(X)
a__nats → nats
a__adx(X) → adx(X)
a__zeros → zeros
a__incr(X) → incr(X)
a__hd(X) → hd(X)
a__tl(X) → tl(X)
Q is empty.
(1) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Recursive path order with status [RPO].
Quasi-Precedence:
[anats, nats] > [aadx1, adx1] > [cons2, aincr1, incr1] > s1
[anats, nats] > azeros > [cons2, aincr1, incr1] > s1
[anats, nats] > azeros > 0 > s1
[anats, nats] > azeros > zeros > s1
[ahd1, mark1, atl1, hd1, tl1] > [aadx1, adx1] > [cons2, aincr1, incr1] > s1
[ahd1, mark1, atl1, hd1, tl1] > azeros > [cons2, aincr1, incr1] > s1
[ahd1, mark1, atl1, hd1, tl1] > azeros > 0 > s1
[ahd1, mark1, atl1, hd1, tl1] > azeros > zeros > s1
Status:
anats: multiset
aadx1: multiset
azeros: multiset
cons2: multiset
0: multiset
zeros: multiset
aincr1: multiset
s1: multiset
incr1: multiset
adx1: multiset
ahd1: multiset
mark1: multiset
atl1: multiset
nats: multiset
hd1: multiset
tl1: multiset
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
a__nats → a__adx(a__zeros)
a__zeros → cons(0, zeros)
a__incr(cons(X, Y)) → cons(s(X), incr(Y))
a__adx(cons(X, Y)) → a__incr(cons(X, adx(Y)))
a__hd(cons(X, Y)) → mark(X)
a__tl(cons(X, Y)) → mark(Y)
mark(nats) → a__nats
mark(adx(X)) → a__adx(mark(X))
mark(zeros) → a__zeros
mark(incr(X)) → a__incr(mark(X))
mark(cons(X1, X2)) → cons(X1, X2)
mark(0) → 0
mark(s(X)) → s(X)
a__zeros → zeros
(2) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
mark(hd(X)) → a__hd(mark(X))
mark(tl(X)) → a__tl(mark(X))
a__nats → nats
a__adx(X) → adx(X)
a__incr(X) → incr(X)
a__hd(X) → hd(X)
a__tl(X) → tl(X)
Q is empty.
(3) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Recursive path order with status [RPO].
Quasi-Precedence:
[mark1, hd1, ahd1] > atl1 > tl1
anats > nats
aadx1 > adx1
aincr1 > incr1
Status:
mark1: multiset
hd1: multiset
ahd1: multiset
tl1: multiset
atl1: multiset
anats: multiset
nats: multiset
aadx1: [1]
adx1: [1]
aincr1: [1]
incr1: [1]
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
mark(tl(X)) → a__tl(mark(X))
a__nats → nats
a__adx(X) → adx(X)
a__incr(X) → incr(X)
a__tl(X) → tl(X)
(4) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
mark(hd(X)) → a__hd(mark(X))
a__hd(X) → hd(X)
Q is empty.
(5) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Recursive path order with status [RPO].
Quasi-Precedence:
mark1 > [hd1, ahd1]
Status:
mark1: multiset
hd1: multiset
ahd1: multiset
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
mark(hd(X)) → a__hd(mark(X))
(6) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
a__hd(X) → hd(X)
Q is empty.
(7) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Recursive path order with status [RPO].
Quasi-Precedence:
ahd1 > hd1
Status:
ahd1: [1]
hd1: [1]
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
a__hd(X) → hd(X)
(8) Obligation:
Q restricted rewrite system:
R is empty.
Q is empty.
(9) RisEmptyProof (EQUIVALENT transformation)
The TRS R is empty. Hence, termination is trivially proven.
(10) TRUE