Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex9_BLR02_C)

The rewrite relation of the following TRS is considered.

active(filter(cons(X,Y),0,M)) mark(cons(0,filter(Y,M,M))) (1)
active(filter(cons(X,Y),s(N),M)) mark(cons(X,filter(Y,N,M))) (2)
active(sieve(cons(0,Y))) mark(cons(0,sieve(Y))) (3)
active(sieve(cons(s(N),Y))) mark(cons(s(N),sieve(filter(Y,N,N)))) (4)
active(nats(N)) mark(cons(N,nats(s(N)))) (5)
active(zprimes) mark(sieve(nats(s(s(0))))) (6)
active(filter(X1,X2,X3)) filter(active(X1),X2,X3) (7)
active(filter(X1,X2,X3)) filter(X1,active(X2),X3) (8)
active(filter(X1,X2,X3)) filter(X1,X2,active(X3)) (9)
active(cons(X1,X2)) cons(active(X1),X2) (10)
active(s(X)) s(active(X)) (11)
active(sieve(X)) sieve(active(X)) (12)
active(nats(X)) nats(active(X)) (13)
filter(mark(X1),X2,X3) mark(filter(X1,X2,X3)) (14)
filter(X1,mark(X2),X3) mark(filter(X1,X2,X3)) (15)
filter(X1,X2,mark(X3)) mark(filter(X1,X2,X3)) (16)
cons(mark(X1),X2) mark(cons(X1,X2)) (17)
s(mark(X)) mark(s(X)) (18)
sieve(mark(X)) mark(sieve(X)) (19)
nats(mark(X)) mark(nats(X)) (20)
proper(filter(X1,X2,X3)) filter(proper(X1),proper(X2),proper(X3)) (21)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (22)
proper(0) ok(0) (23)
proper(s(X)) s(proper(X)) (24)
proper(sieve(X)) sieve(proper(X)) (25)
proper(nats(X)) nats(proper(X)) (26)
proper(zprimes) ok(zprimes) (27)
filter(ok(X1),ok(X2),ok(X3)) ok(filter(X1,X2,X3)) (28)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (29)
s(ok(X)) ok(s(X)) (30)
sieve(ok(X)) ok(sieve(X)) (31)
nats(ok(X)) ok(nats(X)) (32)
top(mark(X)) top(proper(X)) (33)
top(ok(X)) top(active(X)) (34)

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.
active#(filter(cons(X,Y),s(N),M)) filter#(Y,N,M) (35)
proper#(nats(X)) proper#(X) (36)
top#(mark(X)) proper#(X) (37)
proper#(cons(X1,X2)) proper#(X1) (38)
proper#(filter(X1,X2,X3)) proper#(X2) (39)
proper#(nats(X)) nats#(proper(X)) (40)
sieve#(mark(X)) sieve#(X) (41)
top#(ok(X)) top#(active(X)) (42)
proper#(filter(X1,X2,X3)) proper#(X3) (43)
active#(filter(X1,X2,X3)) filter#(X1,active(X2),X3) (44)
filter#(X1,X2,mark(X3)) filter#(X1,X2,X3) (45)
active#(sieve(cons(s(N),Y))) filter#(Y,N,N) (46)
top#(ok(X)) active#(X) (47)
active#(zprimes) s#(s(0)) (48)
s#(mark(X)) s#(X) (49)
filter#(X1,mark(X2),X3) filter#(X1,X2,X3) (50)
nats#(ok(X)) nats#(X) (51)
active#(filter(cons(X,Y),0,M)) cons#(0,filter(Y,M,M)) (52)
active#(s(X)) active#(X) (53)
active#(nats(X)) active#(X) (54)
active#(filter(X1,X2,X3)) active#(X3) (55)
active#(sieve(cons(s(N),Y))) sieve#(filter(Y,N,N)) (56)
active#(filter(X1,X2,X3)) filter#(active(X1),X2,X3) (57)
nats#(mark(X)) nats#(X) (58)
proper#(filter(X1,X2,X3)) proper#(X1) (59)
active#(s(X)) s#(active(X)) (60)
active#(nats(N)) nats#(s(N)) (61)
active#(sieve(cons(s(N),Y))) cons#(s(N),sieve(filter(Y,N,N))) (62)
proper#(s(X)) s#(proper(X)) (63)
active#(nats(N)) cons#(N,nats(s(N))) (64)
active#(filter(cons(X,Y),0,M)) filter#(Y,M,M) (65)
active#(sieve(cons(0,Y))) cons#(0,sieve(Y)) (66)
active#(filter(X1,X2,X3)) active#(X1) (67)
s#(ok(X)) s#(X) (68)
active#(zprimes) s#(0) (69)
cons#(mark(X1),X2) cons#(X1,X2) (70)
active#(filter(X1,X2,X3)) filter#(X1,X2,active(X3)) (71)
filter#(ok(X1),ok(X2),ok(X3)) filter#(X1,X2,X3) (72)
active#(zprimes) nats#(s(s(0))) (73)
proper#(filter(X1,X2,X3)) filter#(proper(X1),proper(X2),proper(X3)) (74)
top#(mark(X)) top#(proper(X)) (75)
proper#(sieve(X)) proper#(X) (76)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (77)
active#(cons(X1,X2)) active#(X1) (78)
active#(sieve(X)) active#(X) (79)
active#(nats(N)) s#(N) (80)
filter#(mark(X1),X2,X3) filter#(X1,X2,X3) (81)
active#(cons(X1,X2)) cons#(active(X1),X2) (82)
proper#(cons(X1,X2)) proper#(X2) (83)
proper#(sieve(X)) sieve#(proper(X)) (84)
active#(sieve(X)) sieve#(active(X)) (85)
cons#(ok(X1),ok(X2)) cons#(X1,X2) (86)
active#(filter(cons(X,Y),s(N),M)) cons#(X,filter(Y,N,M)) (87)
active#(filter(X1,X2,X3)) active#(X2) (88)
active#(nats(X)) nats#(active(X)) (89)
proper#(s(X)) proper#(X) (90)
active#(zprimes) sieve#(nats(s(s(0)))) (91)
active#(sieve(cons(0,Y))) sieve#(Y) (92)
sieve#(ok(X)) sieve#(X) (93)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.