Certification Problem

Input (TPDB TRS_Standard/SK90/2.42)

The rewrite relation of the following TRS is considered.

flatten(nil) nil (1)
flatten(unit(x)) flatten(x) (2)
flatten(++(x,y)) ++(flatten(x),flatten(y)) (3)
flatten(++(unit(x),y)) ++(flatten(x),flatten(y)) (4)
flatten(flatten(x)) flatten(x) (5)
rev(nil) nil (6)
rev(unit(x)) unit(x) (7)
rev(++(x,y)) ++(rev(y),rev(x)) (8)
rev(rev(x)) x (9)
++(x,nil) x (10)
++(nil,y) y (11)
++(++(x,y),z) ++(x,++(y,z)) (12)

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.
++#(++(x,y),z) ++#(x,++(y,z)) (13)
flatten#(++(x,y)) flatten#(y) (14)
rev#(++(x,y)) rev#(x) (15)
flatten#(++(unit(x),y)) flatten#(x) (16)
flatten#(++(unit(x),y)) flatten#(y) (17)
rev#(++(x,y)) ++#(rev(y),rev(x)) (18)
flatten#(++(unit(x),y)) ++#(flatten(x),flatten(y)) (19)
flatten#(++(x,y)) flatten#(x) (20)
++#(++(x,y),z) ++#(y,z) (21)
flatten#(unit(x)) flatten#(x) (22)
rev#(++(x,y)) rev#(y) (23)
flatten#(++(x,y)) ++#(flatten(x),flatten(y)) (24)

1.1 Dependency Graph Processor

The dependency pairs are split into 3 components.