Certification Problem

Input (TPDB TRS_Innermost/Transformed_CSR_innermost_04/ExIntrod_GM04_GM)

The rewrite relation of the following TRS is considered.

a__nats a__adx(a__zeros) (1)
a__zeros cons(0,zeros) (2)
a__incr(cons(X,Y)) cons(s(X),incr(Y)) (3)
a__adx(cons(X,Y)) a__incr(cons(X,adx(Y))) (4)
a__hd(cons(X,Y)) mark(X) (5)
a__tl(cons(X,Y)) mark(Y) (6)
mark(nats) a__nats (7)
mark(adx(X)) a__adx(mark(X)) (8)
mark(zeros) a__zeros (9)
mark(incr(X)) a__incr(mark(X)) (10)
mark(hd(X)) a__hd(mark(X)) (11)
mark(tl(X)) a__tl(mark(X)) (12)
mark(cons(X1,X2)) cons(X1,X2) (13)
mark(0) 0 (14)
mark(s(X)) s(X) (15)
a__nats nats (16)
a__adx(X) adx(X) (17)
a__zeros zeros (18)
a__incr(X) incr(X) (19)
a__hd(X) hd(X) (20)
a__tl(X) tl(X) (21)
The evaluation strategy is innermost.

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Rule Removal

Using the linear polynomial interpretation over the naturals
[a__nats] = 0
[a__adx(x1)] = 1 · x1
[a__zeros] = 0
[cons(x1, x2)] = 1 · x1 + 2 · x2
[0] = 0
[zeros] = 0
[a__incr(x1)] = 1 · x1
[s(x1)] = 1 · x1
[incr(x1)] = 1 · x1
[adx(x1)] = 1 · x1
[a__hd(x1)] = 1 + 2 · x1
[mark(x1)] = 2 · x1
[a__tl(x1)] = 1 + 2 · x1
[nats] = 0
[hd(x1)] = 1 + 2 · x1
[tl(x1)] = 1 + 2 · x1
all of the following rules can be deleted.
a__hd(cons(X,Y)) mark(X) (5)
a__tl(cons(X,Y)) mark(Y) (6)
mark(hd(X)) a__hd(mark(X)) (11)
mark(tl(X)) a__tl(mark(X)) (12)

1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[a__nats] = 0
[a__adx(x1)] = 1 · x1
[a__zeros] = 0
[cons(x1, x2)] = 1 · x1 + 1 · x2
[0] = 0
[zeros] = 0
[a__incr(x1)] = 1 · x1
[s(x1)] = 1 · x1
[incr(x1)] = 1 · x1
[adx(x1)] = 1 · x1
[mark(x1)] = 2 · x1
[nats] = 0
[a__hd(x1)] = 2 + 2 · x1
[hd(x1)] = 2 + 2 · x1
[a__tl(x1)] = 1 + 2 · x1
[tl(x1)] = 2 · x1
all of the following rules can be deleted.
a__tl(X) tl(X) (21)

1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[a__nats] = 0
[a__adx(x1)] = 1 · x1
[a__zeros] = 0
[cons(x1, x2)] = 1 · x1 + 1 · x2
[0] = 0
[zeros] = 0
[a__incr(x1)] = 1 · x1
[s(x1)] = 1 · x1
[incr(x1)] = 1 · x1
[adx(x1)] = 1 · x1
[mark(x1)] = 2 · x1
[nats] = 0
[a__hd(x1)] = 1 + 1 · x1
[hd(x1)] = 1 · x1
all of the following rules can be deleted.
a__hd(X) hd(X) (20)

1.1.1.1 Rule Removal

Using the
prec(a__nats) = 4 stat(a__nats) = mul
prec(a__zeros) = 4 stat(a__zeros) = mul
prec(cons) = 0 stat(cons) = mul
prec(0) = 1 stat(0) = mul
prec(zeros) = 2 stat(zeros) = mul
prec(mark) = 5 stat(mark) = mul
prec(nats) = 3 stat(nats) = mul

π(a__nats) = []
π(a__adx) = 1
π(a__zeros) = []
π(cons) = [1,2]
π(0) = []
π(zeros) = []
π(a__incr) = 1
π(s) = 1
π(incr) = 1
π(adx) = 1
π(mark) = [1]
π(nats) = []

all of the following rules can be deleted.
a__zeros cons(0,zeros) (2)
mark(nats) a__nats (7)
mark(zeros) a__zeros (9)
mark(cons(X1,X2)) cons(X1,X2) (13)
mark(0) 0 (14)
mark(s(X)) s(X) (15)
a__nats nats (16)
a__zeros zeros (18)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[a__nats] = 1
[a__adx(x1)] = 1 · x1
[a__zeros] = 0
[a__incr(x1)] = 1 · x1
[cons(x1, x2)] = 1 · x1 + 2 · x2
[s(x1)] = 1 · x1
[incr(x1)] = 1 · x1
[adx(x1)] = 1 · x1
[mark(x1)] = 2 · x1
all of the following rules can be deleted.
a__nats a__adx(a__zeros) (1)

1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[a__incr(x1)] = 1 · x1
[cons(x1, x2)] = 1 + 1 · x1 + 1 · x2
[s(x1)] = 1 · x1
[incr(x1)] = 1 · x1
[a__adx(x1)] = 2 · x1
[adx(x1)] = 2 · x1
[mark(x1)] = 2 · x1
all of the following rules can be deleted.
a__adx(cons(X,Y)) a__incr(cons(X,adx(Y))) (4)

1.1.1.1.1.1.1 Rule Removal

Using the Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(a__incr) = 2 weight(a__incr) = 1
prec(s) = 6 weight(s) = 0
prec(incr) = 1 weight(incr) = 1
prec(mark) = 5 weight(mark) = 2
prec(adx) = 3 weight(adx) = 1
prec(a__adx) = 4 weight(a__adx) = 1
prec(cons) = 0 weight(cons) = 0
all of the following rules can be deleted.
a__incr(cons(X,Y)) cons(s(X),incr(Y)) (3)
mark(adx(X)) a__adx(mark(X)) (8)
mark(incr(X)) a__incr(mark(X)) (10)
a__adx(X) adx(X) (17)
a__incr(X) incr(X) (19)

1.1.1.1.1.1.1.1 R is empty

There are no rules in the TRS. Hence, it is terminating.