Certification Problem

Input (TPDB TRS_Standard/SK90/4.27)

The rewrite relation of the following TRS is considered.

int(0,0) .(0,nil) (1)
int(0,s(y)) .(0,int(s(0),s(y))) (2)
int(s(x),0) nil (3)
int(s(x),s(y)) int_list(int(x,y)) (4)
int_list(nil) nil (5)
int_list(.(x,y)) .(s(x),int_list(y)) (6)

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
[int(x1, x2)] = 1 + 2 · x1 + 2 · x2
[0] = 0
[.(x1, x2)] = 2 · x1 + 1 · x2
[nil] = 0
[s(x1)] = 1 · x1
[int_list(x1)] = 1 · x1
all of the following rules can be deleted.
int(0,0) .(0,nil) (1)
int(s(x),0) nil (3)

1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[int(x1, x2)] = 2 · x1 + 2 · x2
[0] = 0
[s(x1)] = 2 · x1
[.(x1, x2)] = 1 · x1 + 1 · x2
[int_list(x1)] = 2 · x1
[nil] = 1
all of the following rules can be deleted.
int_list(nil) nil (5)

1.1.1 Switch to Innermost Termination

The TRS is overlay and locally confluent:

10

Hence, it suffices to show innermost termination in the following.

1.1.1.1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
int#(0,s(y)) int#(s(0),s(y)) (7)
int#(s(x),s(y)) int_list#(int(x,y)) (8)
int#(s(x),s(y)) int#(x,y) (9)
int_list#(.(x,y)) int_list#(y) (10)

1.1.1.1.1 Dependency Graph Processor

The dependency pairs are split into 2 components.