Certification Problem

Input (TPDB TRS_Standard/AProVE_07/thiemann03)

The rewrite relation of the following TRS is considered.

null(nil) true (1)
null(add(n,x)) false (2)
tail(add(n,x)) x (3)
tail(nil) nil (4)
head(add(n,x)) n (5)
app(nil,y) y (6)
app(add(n,x),y) add(n,app(x,y)) (7)
reverse(nil) nil (8)
reverse(add(n,x)) app(reverse(x),add(n,nil)) (9)
shuffle(x) shuff(x,nil) (10)
shuff(x,y) if(null(x),x,y,app(y,add(head(x),nil))) (11)
if(true,x,y,z) y (12)
if(false,x,y,z) shuff(reverse(tail(x)),z) (13)

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.
app#(add(n,x),y) app#(x,y) (14)
reverse#(add(n,x)) app#(reverse(x),add(n,nil)) (15)
reverse#(add(n,x)) reverse#(x) (16)
shuffle#(x) shuff#(x,nil) (17)
shuff#(x,y) if#(null(x),x,y,app(y,add(head(x),nil))) (18)
shuff#(x,y) null#(x) (19)
shuff#(x,y) app#(y,add(head(x),nil)) (20)
shuff#(x,y) head#(x) (21)
if#(false,x,y,z) shuff#(reverse(tail(x)),z) (22)
if#(false,x,y,z) reverse#(tail(x)) (23)
if#(false,x,y,z) tail#(x) (24)

1.1.1 Dependency Graph Processor

The dependency pairs are split into 3 components.