Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex49_GM04_iGM)

The rewrite relation of the following TRS is considered.

active(minus(0,Y)) mark(0) (1)
active(minus(s(X),s(Y))) mark(minus(X,Y)) (2)
active(geq(X,0)) mark(true) (3)
active(geq(0,s(Y))) mark(false) (4)
active(geq(s(X),s(Y))) mark(geq(X,Y)) (5)
active(div(0,s(Y))) mark(0) (6)
active(div(s(X),s(Y))) mark(if(geq(X,Y),s(div(minus(X,Y),s(Y))),0)) (7)
active(if(true,X,Y)) mark(X) (8)
active(if(false,X,Y)) mark(Y) (9)
mark(minus(X1,X2)) active(minus(X1,X2)) (10)
mark(0) active(0) (11)
mark(s(X)) active(s(mark(X))) (12)
mark(geq(X1,X2)) active(geq(X1,X2)) (13)
mark(true) active(true) (14)
mark(false) active(false) (15)
mark(div(X1,X2)) active(div(mark(X1),X2)) (16)
mark(if(X1,X2,X3)) active(if(mark(X1),X2,X3)) (17)
minus(mark(X1),X2) minus(X1,X2) (18)
minus(X1,mark(X2)) minus(X1,X2) (19)
minus(active(X1),X2) minus(X1,X2) (20)
minus(X1,active(X2)) minus(X1,X2) (21)
s(mark(X)) s(X) (22)
s(active(X)) s(X) (23)
geq(mark(X1),X2) geq(X1,X2) (24)
geq(X1,mark(X2)) geq(X1,X2) (25)
geq(active(X1),X2) geq(X1,X2) (26)
geq(X1,active(X2)) geq(X1,X2) (27)
div(mark(X1),X2) div(X1,X2) (28)
div(X1,mark(X2)) div(X1,X2) (29)
div(active(X1),X2) div(X1,X2) (30)
div(X1,active(X2)) div(X1,X2) (31)
if(mark(X1),X2,X3) if(X1,X2,X3) (32)
if(X1,mark(X2),X3) if(X1,X2,X3) (33)
if(X1,X2,mark(X3)) if(X1,X2,X3) (34)
if(active(X1),X2,X3) if(X1,X2,X3) (35)
if(X1,active(X2),X3) if(X1,X2,X3) (36)
if(X1,X2,active(X3)) if(X1,X2,X3) (37)

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.
active#(minus(0,Y)) mark#(0) (38)
active#(minus(s(X),s(Y))) minus#(X,Y) (39)
active#(minus(s(X),s(Y))) mark#(minus(X,Y)) (40)
active#(geq(X,0)) mark#(true) (41)
active#(geq(0,s(Y))) mark#(false) (42)
active#(geq(s(X),s(Y))) geq#(X,Y) (43)
active#(geq(s(X),s(Y))) mark#(geq(X,Y)) (44)
active#(div(0,s(Y))) mark#(0) (45)
active#(div(s(X),s(Y))) minus#(X,Y) (46)
active#(div(s(X),s(Y))) div#(minus(X,Y),s(Y)) (47)
active#(div(s(X),s(Y))) s#(div(minus(X,Y),s(Y))) (48)
active#(div(s(X),s(Y))) geq#(X,Y) (49)
active#(div(s(X),s(Y))) if#(geq(X,Y),s(div(minus(X,Y),s(Y))),0) (50)
active#(div(s(X),s(Y))) mark#(if(geq(X,Y),s(div(minus(X,Y),s(Y))),0)) (51)
active#(if(true,X,Y)) mark#(X) (52)
active#(if(false,X,Y)) mark#(Y) (53)
mark#(minus(X1,X2)) active#(minus(X1,X2)) (54)
mark#(0) active#(0) (55)
mark#(s(X)) mark#(X) (56)
mark#(s(X)) s#(mark(X)) (57)
mark#(s(X)) active#(s(mark(X))) (58)
mark#(geq(X1,X2)) active#(geq(X1,X2)) (59)
mark#(true) active#(true) (60)
mark#(false) active#(false) (61)
mark#(div(X1,X2)) mark#(X1) (62)
mark#(div(X1,X2)) div#(mark(X1),X2) (63)
mark#(div(X1,X2)) active#(div(mark(X1),X2)) (64)
mark#(if(X1,X2,X3)) mark#(X1) (65)
mark#(if(X1,X2,X3)) if#(mark(X1),X2,X3) (66)
mark#(if(X1,X2,X3)) active#(if(mark(X1),X2,X3)) (67)
minus#(mark(X1),X2) minus#(X1,X2) (68)
minus#(X1,mark(X2)) minus#(X1,X2) (69)
minus#(active(X1),X2) minus#(X1,X2) (70)
minus#(X1,active(X2)) minus#(X1,X2) (71)
s#(mark(X)) s#(X) (72)
s#(active(X)) s#(X) (73)
geq#(mark(X1),X2) geq#(X1,X2) (74)
geq#(X1,mark(X2)) geq#(X1,X2) (75)
geq#(active(X1),X2) geq#(X1,X2) (76)
geq#(X1,active(X2)) geq#(X1,X2) (77)
div#(mark(X1),X2) div#(X1,X2) (78)
div#(X1,mark(X2)) div#(X1,X2) (79)
div#(active(X1),X2) div#(X1,X2) (80)
div#(X1,active(X2)) div#(X1,X2) (81)
if#(mark(X1),X2,X3) if#(X1,X2,X3) (82)
if#(X1,mark(X2),X3) if#(X1,X2,X3) (83)
if#(X1,X2,mark(X3)) if#(X1,X2,X3) (84)
if#(active(X1),X2,X3) if#(X1,X2,X3) (85)
if#(X1,active(X2),X3) if#(X1,X2,X3) (86)
if#(X1,X2,active(X3)) if#(X1,X2,X3) (87)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.