Certification Problem

Input (TPDB TRS_Standard/Rubio_04/quick)

The rewrite relation of the following TRS is considered.

le(0,Y) true (1)
le(s(X),0) false (2)
le(s(X),s(Y)) le(X,Y) (3)
app(nil,Y) Y (4)
app(cons(N,L),Y) cons(N,app(L,Y)) (5)
low(N,nil) nil (6)
low(N,cons(M,L)) iflow(le(M,N),N,cons(M,L)) (7)
iflow(true,N,cons(M,L)) cons(M,low(N,L)) (8)
iflow(false,N,cons(M,L)) low(N,L) (9)
high(N,nil) nil (10)
high(N,cons(M,L)) ifhigh(le(M,N),N,cons(M,L)) (11)
ifhigh(true,N,cons(M,L)) high(N,L) (12)
ifhigh(false,N,cons(M,L)) cons(M,high(N,L)) (13)
quicksort(nil) nil (14)
quicksort(cons(N,L)) app(quicksort(low(N,L)),cons(N,quicksort(high(N,L)))) (15)

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.
iflow#(false,N,cons(M,L)) low#(N,L) (16)
low#(N,cons(M,L)) iflow#(le(M,N),N,cons(M,L)) (17)
quicksort#(cons(N,L)) low#(N,L) (18)
le#(s(X),s(Y)) le#(X,Y) (19)
quicksort#(cons(N,L)) app#(quicksort(low(N,L)),cons(N,quicksort(high(N,L)))) (20)
quicksort#(cons(N,L)) quicksort#(low(N,L)) (21)
quicksort#(cons(N,L)) quicksort#(high(N,L)) (22)
low#(N,cons(M,L)) le#(M,N) (23)
iflow#(true,N,cons(M,L)) low#(N,L) (24)
ifhigh#(true,N,cons(M,L)) high#(N,L) (25)
high#(N,cons(M,L)) ifhigh#(le(M,N),N,cons(M,L)) (26)
ifhigh#(false,N,cons(M,L)) high#(N,L) (27)
app#(cons(N,L),Y) app#(L,Y) (28)
quicksort#(cons(N,L)) high#(N,L) (29)
high#(N,cons(M,L)) le#(M,N) (30)

1.1 Dependency Graph Processor

The dependency pairs are split into 5 components.