Certification Problem

Input (TPDB TRS_Standard/Secret_06_TRS/double)

The rewrite relation of the following TRS is considered.

double(x) permute(x,x,a) (1)
permute(x,y,a) permute(isZero(x),x,b) (2)
permute(false,x,b) permute(ack(x,x),p(x),c) (3)
permute(true,x,b) 0 (4)
permute(y,x,c) s(s(permute(x,y,a))) (5)
p(0) 0 (6)
p(s(x)) x (7)
ack(0,x) plus(x,s(0)) (8)
ack(s(x),0) ack(x,s(0)) (9)
ack(s(x),s(y)) ack(x,ack(s(x),y)) (10)
plus(0,y) y (11)
plus(s(x),y) plus(x,s(y)) (12)
plus(x,s(s(y))) s(plus(s(x),y)) (13)
plus(x,s(0)) s(x) (14)
plus(x,0) x (15)
isZero(0) true (16)
isZero(s(x)) false (17)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
double#(x) permute#(x,x,a) (18)
permute#(x,y,a) permute#(isZero(x),x,b) (19)
permute#(x,y,a) isZero#(x) (20)
permute#(false,x,b) permute#(ack(x,x),p(x),c) (21)
permute#(false,x,b) ack#(x,x) (22)
permute#(false,x,b) p#(x) (23)
permute#(y,x,c) permute#(x,y,a) (24)
ack#(0,x) plus#(x,s(0)) (25)
ack#(s(x),0) ack#(x,s(0)) (26)
ack#(s(x),s(y)) ack#(x,ack(s(x),y)) (27)
ack#(s(x),s(y)) ack#(s(x),y) (28)
plus#(s(x),y) plus#(x,s(y)) (29)
plus#(x,s(s(y))) plus#(s(x),y) (30)

1.1 Dependency Graph Processor

The dependency pairs are split into 3 components.