Certification Problem

Input (TPDB TRS_Standard/Applicative_05/TakeDropWhile)

The rewrite relation of the following TRS is considered.

app(app(app(if,true),x),y) x (1)
app(app(app(if,true),x),y) y (2)
app(app(takeWhile,p),nil) nil (3)
app(app(takeWhile,p),app(app(cons,x),xs)) app(app(app(if,app(p,x)),app(app(cons,x),app(app(takeWhile,p),xs))),nil) (4)
app(app(dropWhile,p),nil) nil (5)
app(app(dropWhile,p),app(app(cons,x),xs)) app(app(app(if,app(p,x)),app(app(dropWhile,p),xs)),app(app(cons,x),xs)) (6)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by NaTT @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
app#(app(dropWhile,p),app(app(cons,x),xs)) app#(app(if,app(p,x)),app(app(dropWhile,p),xs)) (7)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(app(app(if,app(p,x)),app(app(cons,x),app(app(takeWhile,p),xs))),nil) (8)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(p,x) (9)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(app(takeWhile,p),xs) (10)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(app(if,app(p,x)),app(app(cons,x),app(app(takeWhile,p),xs))) (11)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(app(cons,x),app(app(takeWhile,p),xs)) (12)
app#(app(dropWhile,p),app(app(cons,x),xs)) app#(app(dropWhile,p),xs) (13)
app#(app(dropWhile,p),app(app(cons,x),xs)) app#(if,app(p,x)) (14)
app#(app(dropWhile,p),app(app(cons,x),xs)) app#(app(app(if,app(p,x)),app(app(dropWhile,p),xs)),app(app(cons,x),xs)) (15)
app#(app(takeWhile,p),app(app(cons,x),xs)) app#(if,app(p,x)) (16)
app#(app(dropWhile,p),app(app(cons,x),xs)) app#(p,x) (17)

1.1 Dependency Graph Processor

The dependency pairs are split into 1 component.