Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/ExIntrod_GM99_GM)

The rewrite relation of the following TRS is considered.

a__primes a__sieve(a__from(s(s(0)))) (1)
a__from(X) cons(mark(X),from(s(X))) (2)
a__head(cons(X,Y)) mark(X) (3)
a__tail(cons(X,Y)) mark(Y) (4)
a__if(true,X,Y) mark(X) (5)
a__if(false,X,Y) mark(Y) (6)
a__filter(s(s(X)),cons(Y,Z)) a__if(divides(s(s(mark(X))),mark(Y)),filter(s(s(X)),Z),cons(Y,filter(X,sieve(Y)))) (7)
a__sieve(cons(X,Y)) cons(mark(X),filter(X,sieve(Y))) (8)
mark(primes) a__primes (9)
mark(sieve(X)) a__sieve(mark(X)) (10)
mark(from(X)) a__from(mark(X)) (11)
mark(head(X)) a__head(mark(X)) (12)
mark(tail(X)) a__tail(mark(X)) (13)
mark(if(X1,X2,X3)) a__if(mark(X1),X2,X3) (14)
mark(filter(X1,X2)) a__filter(mark(X1),mark(X2)) (15)
mark(s(X)) s(mark(X)) (16)
mark(0) 0 (17)
mark(cons(X1,X2)) cons(mark(X1),X2) (18)
mark(true) true (19)
mark(false) false (20)
mark(divides(X1,X2)) divides(mark(X1),mark(X2)) (21)
a__primes primes (22)
a__sieve(X) sieve(X) (23)
a__from(X) from(X) (24)
a__head(X) head(X) (25)
a__tail(X) tail(X) (26)
a__if(X1,X2,X3) if(X1,X2,X3) (27)
a__filter(X1,X2) filter(X1,X2) (28)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
a__primes# a__from#(s(s(0))) (29)
a__primes# a__sieve#(a__from(s(s(0)))) (30)
a__from#(X) mark#(X) (31)
a__head#(cons(X,Y)) mark#(X) (32)
a__tail#(cons(X,Y)) mark#(Y) (33)
a__if#(true,X,Y) mark#(X) (34)
a__if#(false,X,Y) mark#(Y) (35)
a__filter#(s(s(X)),cons(Y,Z)) mark#(Y) (36)
a__filter#(s(s(X)),cons(Y,Z)) mark#(X) (37)
a__filter#(s(s(X)),cons(Y,Z)) a__if#(divides(s(s(mark(X))),mark(Y)),filter(s(s(X)),Z),cons(Y,filter(X,sieve(Y)))) (38)
a__sieve#(cons(X,Y)) mark#(X) (39)
mark#(primes) a__primes# (40)
mark#(sieve(X)) mark#(X) (41)
mark#(sieve(X)) a__sieve#(mark(X)) (42)
mark#(from(X)) mark#(X) (43)
mark#(from(X)) a__from#(mark(X)) (44)
mark#(head(X)) mark#(X) (45)
mark#(head(X)) a__head#(mark(X)) (46)
mark#(tail(X)) mark#(X) (47)
mark#(tail(X)) a__tail#(mark(X)) (48)
mark#(if(X1,X2,X3)) mark#(X1) (49)
mark#(if(X1,X2,X3)) a__if#(mark(X1),X2,X3) (50)
mark#(filter(X1,X2)) mark#(X2) (51)
mark#(filter(X1,X2)) mark#(X1) (52)
mark#(filter(X1,X2)) a__filter#(mark(X1),mark(X2)) (53)
mark#(s(X)) mark#(X) (54)
mark#(cons(X1,X2)) mark#(X1) (55)
mark#(divides(X1,X2)) mark#(X2) (56)
mark#(divides(X1,X2)) mark#(X1) (57)

1.1 Dependency Graph Processor

The dependency pairs are split into 1 component.