Certification Problem

Input (TPDB TRS_Innermost/Transformed_CSR_innermost_04/Ex1_GL02a_GM)

The rewrite relation of the following TRS is considered.

a__eq(0,0) true (1)
a__eq(s(X),s(Y)) a__eq(X,Y) (2)
a__eq(X,Y) false (3)
a__inf(X) cons(X,inf(s(X))) (4)
a__take(0,X) nil (5)
a__take(s(X),cons(Y,L)) cons(Y,take(X,L)) (6)
a__length(nil) 0 (7)
a__length(cons(X,L)) s(length(L)) (8)
mark(eq(X1,X2)) a__eq(X1,X2) (9)
mark(inf(X)) a__inf(mark(X)) (10)
mark(take(X1,X2)) a__take(mark(X1),mark(X2)) (11)
mark(length(X)) a__length(mark(X)) (12)
mark(0) 0 (13)
mark(true) true (14)
mark(s(X)) s(X) (15)
mark(false) false (16)
mark(cons(X1,X2)) cons(X1,X2) (17)
mark(nil) nil (18)
a__eq(X1,X2) eq(X1,X2) (19)
a__inf(X) inf(X) (20)
a__take(X1,X2) take(X1,X2) (21)
a__length(X) length(X) (22)
The evaluation strategy is innermost.

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Rule Removal

Using the
prec(a__eq) = 9 stat(a__eq) = mul
prec(0) = 1 stat(0) = mul
prec(true) = 2 stat(true) = mul
prec(s) = 0 stat(s) = mul
prec(false) = 3 stat(false) = mul
prec(a__inf) = 4 stat(a__inf) = mul
prec(cons) = 0 stat(cons) = mul
prec(inf) = 0 stat(inf) = mul
prec(a__take) = 7 stat(a__take) = mul
prec(nil) = 5 stat(nil) = mul
prec(take) = 6 stat(take) = mul
prec(a__length) = 9 stat(a__length) = mul
prec(length) = 9 stat(length) = mul
prec(mark) = 9 stat(mark) = mul
prec(eq) = 8 stat(eq) = mul

π(a__eq) = [1,2]
π(0) = []
π(true) = []
π(s) = [1]
π(false) = []
π(a__inf) = [1]
π(cons) = [1,2]
π(inf) = [1]
π(a__take) = [1,2]
π(nil) = []
π(take) = [1,2]
π(a__length) = [1]
π(length) = [1]
π(mark) = [1]
π(eq) = [1,2]

all of the following rules can be deleted.
a__eq(0,0) true (1)
a__eq(s(X),s(Y)) a__eq(X,Y) (2)
a__eq(X,Y) false (3)
a__inf(X) cons(X,inf(s(X))) (4)
a__take(0,X) nil (5)
a__take(s(X),cons(Y,L)) cons(Y,take(X,L)) (6)
a__length(nil) 0 (7)
a__length(cons(X,L)) s(length(L)) (8)
mark(eq(X1,X2)) a__eq(X1,X2) (9)
mark(inf(X)) a__inf(mark(X)) (10)
mark(take(X1,X2)) a__take(mark(X1),mark(X2)) (11)
mark(0) 0 (13)
mark(true) true (14)
mark(s(X)) s(X) (15)
mark(false) false (16)
mark(cons(X1,X2)) cons(X1,X2) (17)
mark(nil) nil (18)
a__eq(X1,X2) eq(X1,X2) (19)
a__inf(X) inf(X) (20)
a__take(X1,X2) take(X1,X2) (21)

1.1 Rule Removal

Using the
prec(mark) = 1 stat(mark) = lex
prec(length) = 0 stat(length) = lex
prec(a__length) = 0 stat(a__length) = lex

π(mark) = [1]
π(length) = [1]
π(a__length) = [1]

all of the following rules can be deleted.
mark(length(X)) a__length(mark(X)) (12)

1.1.1 Rule Removal

Using the Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(a__length) = 1 weight(a__length) = 1
prec(length) = 0 weight(length) = 1
all of the following rules can be deleted.
a__length(X) length(X) (22)

1.1.1.1 R is empty

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