Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/LengthOfFiniteLists_nokinds_GM)

The rewrite relation of the following TRS is considered.

a__zeros cons(0,zeros) (1)
a__U11(tt,L) s(a__length(mark(L))) (2)
a__and(tt,X) mark(X) (3)
a__isNat(0) tt (4)
a__isNat(length(V1)) a__isNatList(V1) (5)
a__isNat(s(V1)) a__isNat(V1) (6)
a__isNatIList(V) a__isNatList(V) (7)
a__isNatIList(zeros) tt (8)
a__isNatIList(cons(V1,V2)) a__and(a__isNat(V1),isNatIList(V2)) (9)
a__isNatList(nil) tt (10)
a__isNatList(cons(V1,V2)) a__and(a__isNat(V1),isNatList(V2)) (11)
a__length(nil) 0 (12)
a__length(cons(N,L)) a__U11(a__and(a__isNatList(L),isNat(N)),L) (13)
mark(zeros) a__zeros (14)
mark(U11(X1,X2)) a__U11(mark(X1),X2) (15)
mark(length(X)) a__length(mark(X)) (16)
mark(and(X1,X2)) a__and(mark(X1),X2) (17)
mark(isNat(X)) a__isNat(X) (18)
mark(isNatList(X)) a__isNatList(X) (19)
mark(isNatIList(X)) a__isNatIList(X) (20)
mark(cons(X1,X2)) cons(mark(X1),X2) (21)
mark(0) 0 (22)
mark(tt) tt (23)
mark(s(X)) s(mark(X)) (24)
mark(nil) nil (25)
a__zeros zeros (26)
a__U11(X1,X2) U11(X1,X2) (27)
a__length(X) length(X) (28)
a__and(X1,X2) and(X1,X2) (29)
a__isNat(X) isNat(X) (30)
a__isNatList(X) isNatList(X) (31)
a__isNatIList(X) isNatIList(X) (32)

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.
a__U11#(tt,L) mark#(L) (33)
a__length#(cons(N,L)) a__isNatList#(L) (34)
mark#(isNatIList(X)) a__isNatIList#(X) (35)
a__isNatList#(cons(V1,V2)) a__and#(a__isNat(V1),isNatList(V2)) (36)
mark#(s(X)) mark#(X) (37)
mark#(U11(X1,X2)) mark#(X1) (38)
mark#(U11(X1,X2)) a__U11#(mark(X1),X2) (39)
mark#(zeros) a__zeros# (40)
a__isNatIList#(V) a__isNatList#(V) (41)
mark#(isNat(X)) a__isNat#(X) (42)
mark#(length(X)) a__length#(mark(X)) (43)
a__isNatIList#(cons(V1,V2)) a__and#(a__isNat(V1),isNatIList(V2)) (44)
a__isNatList#(cons(V1,V2)) a__isNat#(V1) (45)
a__length#(cons(N,L)) a__and#(a__isNatList(L),isNat(N)) (46)
a__and#(tt,X) mark#(X) (47)
mark#(and(X1,X2)) mark#(X1) (48)
mark#(cons(X1,X2)) mark#(X1) (49)
mark#(length(X)) mark#(X) (50)
mark#(and(X1,X2)) a__and#(mark(X1),X2) (51)
a__isNat#(s(V1)) a__isNat#(V1) (52)
a__U11#(tt,L) a__length#(mark(L)) (53)
a__isNatIList#(cons(V1,V2)) a__isNat#(V1) (54)
a__isNat#(length(V1)) a__isNatList#(V1) (55)
a__length#(cons(N,L)) a__U11#(a__and(a__isNatList(L),isNat(N)),L) (56)
mark#(isNatList(X)) a__isNatList#(X) (57)

1.1 Dependency Graph Processor

The dependency pairs are split into 1 component.