Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex4_7_37_Bor03_iGM)

The rewrite relation of the following TRS is considered.

active(from(X)) mark(cons(X,from(s(X)))) (1)
active(sel(0,cons(X,XS))) mark(X) (2)
active(sel(s(N),cons(X,XS))) mark(sel(N,XS)) (3)
active(minus(X,0)) mark(0) (4)
active(minus(s(X),s(Y))) mark(minus(X,Y)) (5)
active(quot(0,s(Y))) mark(0) (6)
active(quot(s(X),s(Y))) mark(s(quot(minus(X,Y),s(Y)))) (7)
active(zWquot(XS,nil)) mark(nil) (8)
active(zWquot(nil,XS)) mark(nil) (9)
active(zWquot(cons(X,XS),cons(Y,YS))) mark(cons(quot(X,Y),zWquot(XS,YS))) (10)
mark(from(X)) active(from(mark(X))) (11)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (12)
mark(s(X)) active(s(mark(X))) (13)
mark(sel(X1,X2)) active(sel(mark(X1),mark(X2))) (14)
mark(0) active(0) (15)
mark(minus(X1,X2)) active(minus(mark(X1),mark(X2))) (16)
mark(quot(X1,X2)) active(quot(mark(X1),mark(X2))) (17)
mark(zWquot(X1,X2)) active(zWquot(mark(X1),mark(X2))) (18)
mark(nil) active(nil) (19)
from(mark(X)) from(X) (20)
from(active(X)) from(X) (21)
cons(mark(X1),X2) cons(X1,X2) (22)
cons(X1,mark(X2)) cons(X1,X2) (23)
cons(active(X1),X2) cons(X1,X2) (24)
cons(X1,active(X2)) cons(X1,X2) (25)
s(mark(X)) s(X) (26)
s(active(X)) s(X) (27)
sel(mark(X1),X2) sel(X1,X2) (28)
sel(X1,mark(X2)) sel(X1,X2) (29)
sel(active(X1),X2) sel(X1,X2) (30)
sel(X1,active(X2)) sel(X1,X2) (31)
minus(mark(X1),X2) minus(X1,X2) (32)
minus(X1,mark(X2)) minus(X1,X2) (33)
minus(active(X1),X2) minus(X1,X2) (34)
minus(X1,active(X2)) minus(X1,X2) (35)
quot(mark(X1),X2) quot(X1,X2) (36)
quot(X1,mark(X2)) quot(X1,X2) (37)
quot(active(X1),X2) quot(X1,X2) (38)
quot(X1,active(X2)) quot(X1,X2) (39)
zWquot(mark(X1),X2) zWquot(X1,X2) (40)
zWquot(X1,mark(X2)) zWquot(X1,X2) (41)
zWquot(active(X1),X2) zWquot(X1,X2) (42)
zWquot(X1,active(X2)) zWquot(X1,X2) (43)

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.
zWquot#(X1,active(X2)) zWquot#(X1,X2) (44)
sel#(mark(X1),X2) sel#(X1,X2) (45)
cons#(X1,active(X2)) cons#(X1,X2) (46)
quot#(X1,active(X2)) quot#(X1,X2) (47)
active#(zWquot(XS,nil)) mark#(nil) (48)
s#(active(X)) s#(X) (49)
active#(minus(s(X),s(Y))) minus#(X,Y) (50)
active#(minus(s(X),s(Y))) mark#(minus(X,Y)) (51)
active#(zWquot(cons(X,XS),cons(Y,YS))) cons#(quot(X,Y),zWquot(XS,YS)) (52)
mark#(quot(X1,X2)) active#(quot(mark(X1),mark(X2))) (53)
s#(mark(X)) s#(X) (54)
mark#(zWquot(X1,X2)) mark#(X1) (55)
mark#(quot(X1,X2)) quot#(mark(X1),mark(X2)) (56)
mark#(minus(X1,X2)) mark#(X1) (57)
active#(sel(s(N),cons(X,XS))) sel#(N,XS) (58)
active#(zWquot(cons(X,XS),cons(Y,YS))) quot#(X,Y) (59)
zWquot#(X1,mark(X2)) zWquot#(X1,X2) (60)
mark#(minus(X1,X2)) mark#(X2) (61)
from#(active(X)) from#(X) (62)
mark#(0) active#(0) (63)
minus#(X1,mark(X2)) minus#(X1,X2) (64)
minus#(mark(X1),X2) minus#(X1,X2) (65)
mark#(s(X)) mark#(X) (66)
active#(quot(0,s(Y))) mark#(0) (67)
mark#(s(X)) active#(s(mark(X))) (68)
mark#(minus(X1,X2)) minus#(mark(X1),mark(X2)) (69)
mark#(sel(X1,X2)) active#(sel(mark(X1),mark(X2))) (70)
mark#(zWquot(X1,X2)) zWquot#(mark(X1),mark(X2)) (71)
sel#(X1,active(X2)) sel#(X1,X2) (72)
minus#(active(X1),X2) minus#(X1,X2) (73)
mark#(zWquot(X1,X2)) active#(zWquot(mark(X1),mark(X2))) (74)
mark#(s(X)) s#(mark(X)) (75)
active#(quot(s(X),s(Y))) mark#(s(quot(minus(X,Y),s(Y)))) (76)
mark#(minus(X1,X2)) active#(minus(mark(X1),mark(X2))) (77)
active#(zWquot(nil,XS)) mark#(nil) (78)
active#(from(X)) mark#(cons(X,from(s(X)))) (79)
from#(mark(X)) from#(X) (80)
mark#(nil) active#(nil) (81)
mark#(quot(X1,X2)) mark#(X1) (82)
mark#(sel(X1,X2)) sel#(mark(X1),mark(X2)) (83)
mark#(cons(X1,X2)) active#(cons(mark(X1),X2)) (84)
quot#(X1,mark(X2)) quot#(X1,X2) (85)
active#(zWquot(cons(X,XS),cons(Y,YS))) zWquot#(XS,YS) (86)
zWquot#(mark(X1),X2) zWquot#(X1,X2) (87)
active#(from(X)) from#(s(X)) (88)
active#(quot(s(X),s(Y))) quot#(minus(X,Y),s(Y)) (89)
mark#(zWquot(X1,X2)) mark#(X2) (90)
zWquot#(active(X1),X2) zWquot#(X1,X2) (91)
cons#(mark(X1),X2) cons#(X1,X2) (92)
active#(from(X)) s#(X) (93)
sel#(active(X1),X2) sel#(X1,X2) (94)
mark#(cons(X1,X2)) mark#(X1) (95)
active#(quot(s(X),s(Y))) minus#(X,Y) (96)
mark#(sel(X1,X2)) mark#(X2) (97)
active#(sel(s(N),cons(X,XS))) mark#(sel(N,XS)) (98)
mark#(from(X)) mark#(X) (99)
active#(quot(s(X),s(Y))) s#(quot(minus(X,Y),s(Y))) (100)
cons#(X1,mark(X2)) cons#(X1,X2) (101)
active#(from(X)) cons#(X,from(s(X))) (102)
mark#(sel(X1,X2)) mark#(X1) (103)
active#(minus(X,0)) mark#(0) (104)
active#(zWquot(cons(X,XS),cons(Y,YS))) mark#(cons(quot(X,Y),zWquot(XS,YS))) (105)
mark#(cons(X1,X2)) cons#(mark(X1),X2) (106)
mark#(from(X)) from#(mark(X)) (107)
sel#(X1,mark(X2)) sel#(X1,X2) (108)
active#(sel(0,cons(X,XS))) mark#(X) (109)
quot#(mark(X1),X2) quot#(X1,X2) (110)
quot#(active(X1),X2) quot#(X1,X2) (111)
mark#(from(X)) active#(from(mark(X))) (112)
minus#(X1,active(X2)) minus#(X1,X2) (113)
mark#(quot(X1,X2)) mark#(X2) (114)
cons#(active(X1),X2) cons#(X1,X2) (115)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.