Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex2_Luc03b_FR)

The rewrite relation of the following TRS is considered.

fst(0,Z) nil (1)
fst(s(X),cons(Y,Z)) cons(Y,n__fst(activate(X),activate(Z))) (2)
from(X) cons(X,n__from(n__s(X))) (3)
add(0,X) X (4)
add(s(X),Y) s(n__add(activate(X),Y)) (5)
len(nil) 0 (6)
len(cons(X,Z)) s(n__len(activate(Z))) (7)
fst(X1,X2) n__fst(X1,X2) (8)
from(X) n__from(X) (9)
s(X) n__s(X) (10)
add(X1,X2) n__add(X1,X2) (11)
len(X) n__len(X) (12)
activate(n__fst(X1,X2)) fst(activate(X1),activate(X2)) (13)
activate(n__from(X)) from(activate(X)) (14)
activate(n__s(X)) s(X) (15)
activate(n__add(X1,X2)) add(activate(X1),activate(X2)) (16)
activate(n__len(X)) len(activate(X)) (17)
activate(X) X (18)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Rule Removal

Using the Weighted Path Order with the following precedence and status
prec(n__len) = 0 status(n__len) = [1] list-extension(n__len) = Lex
prec(len) = 3 status(len) = [1] list-extension(len) = Lex
prec(n__add) = 0 status(n__add) = [2, 1] list-extension(n__add) = Lex
prec(add) = 3 status(add) = [2, 1] list-extension(add) = Lex
prec(n__from) = 0 status(n__from) = [1] list-extension(n__from) = Lex
prec(n__s) = 0 status(n__s) = [1] list-extension(n__s) = Lex
prec(from) = 1 status(from) = [1] list-extension(from) = Lex
prec(n__fst) = 0 status(n__fst) = [2, 1] list-extension(n__fst) = Lex
prec(activate) = 9 status(activate) = [1] list-extension(activate) = Lex
prec(cons) = 0 status(cons) = [1, 2] list-extension(cons) = Lex
prec(s) = 2 status(s) = [1] list-extension(s) = Lex
prec(nil) = 0 status(nil) = [] list-extension(nil) = Lex
prec(fst) = 8 status(fst) = [1, 2] list-extension(fst) = Lex
prec(0) = 0 status(0) = [] list-extension(0) = Lex
and the following Max-polynomial interpretation
[n__len(x1)] = max(0, 2 + 1 · x1)
[len(x1)] = max(0, 2 + 1 · x1)
[n__add(x1, x2)] = max(0, 1 + 1 · x1, 0 + 1 · x2)
[add(x1, x2)] = max(0, 1 + 1 · x1, 0 + 1 · x2)
[n__from(x1)] = max(0, 0 + 1 · x1)
[n__s(x1)] = 0 + 1 · x1
[from(x1)] = max(0, 0 + 1 · x1)
[n__fst(x1, x2)] = 1 + 1 · x1 + 1 · x2
[activate(x1)] = max(0, 0 + 1 · x1)
[cons(x1, x2)] = max(0, 0 + 1 · x1, 0 + 1 · x2)
[s(x1)] = max(0, 0 + 1 · x1)
[nil] = max(4)
[fst(x1, x2)] = 1 + 1 · x1 + 1 · x2
[0] = max(4)
all of the following rules can be deleted.
fst(0,Z) nil (1)
fst(s(X),cons(Y,Z)) cons(Y,n__fst(activate(X),activate(Z))) (2)
from(X) cons(X,n__from(n__s(X))) (3)
add(0,X) X (4)
add(s(X),Y) s(n__add(activate(X),Y)) (5)
len(nil) 0 (6)
len(cons(X,Z)) s(n__len(activate(Z))) (7)
fst(X1,X2) n__fst(X1,X2) (8)
from(X) n__from(X) (9)
s(X) n__s(X) (10)
add(X1,X2) n__add(X1,X2) (11)
len(X) n__len(X) (12)
activate(n__fst(X1,X2)) fst(activate(X1),activate(X2)) (13)
activate(n__from(X)) from(activate(X)) (14)
activate(n__s(X)) s(X) (15)
activate(n__add(X1,X2)) add(activate(X1),activate(X2)) (16)
activate(n__len(X)) len(activate(X)) (17)
activate(X) X (18)

1.1 R is empty

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