Certification Problem

Input (TPDB TRS_Standard/AProVE_07/otto10)

The rewrite relation of the following TRS is considered.

ge(x,0) true (1)
ge(0,s(y)) false (2)
ge(s(x),s(y)) ge(x,y) (3)
rev(x) if(x,eq(0,length(x)),nil,0,length(x)) (4)
if(x,true,z,c,l) z (5)
if(x,false,z,c,l) help(s(c),l,x,z) (6)
help(c,l,cons(x,y),z) if(append(y,cons(x,nil)),ge(c,l),cons(x,z),c,l) (7)
append(nil,y) y (8)
append(cons(x,y),z) cons(x,append(y,z)) (9)
length(nil) 0 (10)
length(cons(x,y)) s(length(y)) (11)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

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 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
ge#(s(x),s(y)) ge#(x,y) (12)
rev#(x) if#(x,eq(0,length(x)),nil,0,length(x)) (13)
rev#(x) length#(x) (14)
if#(x,false,z,c,l) help#(s(c),l,x,z) (15)
help#(c,l,cons(x,y),z) if#(append(y,cons(x,nil)),ge(c,l),cons(x,z),c,l) (16)
help#(c,l,cons(x,y),z) append#(y,cons(x,nil)) (17)
help#(c,l,cons(x,y),z) ge#(c,l) (18)
append#(cons(x,y),z) append#(y,z) (19)
length#(cons(x,y)) length#(y) (20)

1.1.1 Dependency Graph Processor

The dependency pairs are split into 4 components.