Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/ExSec11_1_Luc02a_iGM)

The rewrite relation of the following TRS is considered.

active(terms(N)) mark(cons(recip(sqr(N)),terms(s(N)))) (1)
active(sqr(0)) mark(0) (2)
active(sqr(s(X))) mark(s(add(sqr(X),dbl(X)))) (3)
active(dbl(0)) mark(0) (4)
active(dbl(s(X))) mark(s(s(dbl(X)))) (5)
active(add(0,X)) mark(X) (6)
active(add(s(X),Y)) mark(s(add(X,Y))) (7)
active(first(0,X)) mark(nil) (8)
active(first(s(X),cons(Y,Z))) mark(cons(Y,first(X,Z))) (9)
active(half(0)) mark(0) (10)
active(half(s(0))) mark(0) (11)
active(half(s(s(X)))) mark(s(half(X))) (12)
active(half(dbl(X))) mark(X) (13)
mark(terms(X)) active(terms(mark(X))) (14)
mark(cons(X1,X2)) active(cons(mark(X1),X2)) (15)
mark(recip(X)) active(recip(mark(X))) (16)
mark(sqr(X)) active(sqr(mark(X))) (17)
mark(s(X)) active(s(mark(X))) (18)
mark(0) active(0) (19)
mark(add(X1,X2)) active(add(mark(X1),mark(X2))) (20)
mark(dbl(X)) active(dbl(mark(X))) (21)
mark(first(X1,X2)) active(first(mark(X1),mark(X2))) (22)
mark(nil) active(nil) (23)
mark(half(X)) active(half(mark(X))) (24)
terms(mark(X)) terms(X) (25)
terms(active(X)) terms(X) (26)
cons(mark(X1),X2) cons(X1,X2) (27)
cons(X1,mark(X2)) cons(X1,X2) (28)
cons(active(X1),X2) cons(X1,X2) (29)
cons(X1,active(X2)) cons(X1,X2) (30)
recip(mark(X)) recip(X) (31)
recip(active(X)) recip(X) (32)
sqr(mark(X)) sqr(X) (33)
sqr(active(X)) sqr(X) (34)
s(mark(X)) s(X) (35)
s(active(X)) s(X) (36)
add(mark(X1),X2) add(X1,X2) (37)
add(X1,mark(X2)) add(X1,X2) (38)
add(active(X1),X2) add(X1,X2) (39)
add(X1,active(X2)) add(X1,X2) (40)
dbl(mark(X)) dbl(X) (41)
dbl(active(X)) dbl(X) (42)
first(mark(X1),X2) first(X1,X2) (43)
first(X1,mark(X2)) first(X1,X2) (44)
first(active(X1),X2) first(X1,X2) (45)
first(X1,active(X2)) first(X1,X2) (46)
half(mark(X)) half(X) (47)
half(active(X)) half(X) (48)

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#(terms(N)) s#(N) (49)
active#(terms(N)) terms#(s(N)) (50)
active#(terms(N)) sqr#(N) (51)
active#(terms(N)) recip#(sqr(N)) (52)
active#(terms(N)) cons#(recip(sqr(N)),terms(s(N))) (53)
active#(terms(N)) mark#(cons(recip(sqr(N)),terms(s(N)))) (54)
active#(sqr(0)) mark#(0) (55)
active#(sqr(s(X))) dbl#(X) (56)
active#(sqr(s(X))) sqr#(X) (57)
active#(sqr(s(X))) add#(sqr(X),dbl(X)) (58)
active#(sqr(s(X))) s#(add(sqr(X),dbl(X))) (59)
active#(sqr(s(X))) mark#(s(add(sqr(X),dbl(X)))) (60)
active#(dbl(0)) mark#(0) (61)
active#(dbl(s(X))) dbl#(X) (62)
active#(dbl(s(X))) s#(dbl(X)) (63)
active#(dbl(s(X))) s#(s(dbl(X))) (64)
active#(dbl(s(X))) mark#(s(s(dbl(X)))) (65)
active#(add(0,X)) mark#(X) (66)
active#(add(s(X),Y)) add#(X,Y) (67)
active#(add(s(X),Y)) s#(add(X,Y)) (68)
active#(add(s(X),Y)) mark#(s(add(X,Y))) (69)
active#(first(0,X)) mark#(nil) (70)
active#(first(s(X),cons(Y,Z))) first#(X,Z) (71)
active#(first(s(X),cons(Y,Z))) cons#(Y,first(X,Z)) (72)
active#(first(s(X),cons(Y,Z))) mark#(cons(Y,first(X,Z))) (73)
active#(half(0)) mark#(0) (74)
active#(half(s(0))) mark#(0) (75)
active#(half(s(s(X)))) half#(X) (76)
active#(half(s(s(X)))) s#(half(X)) (77)
active#(half(s(s(X)))) mark#(s(half(X))) (78)
active#(half(dbl(X))) mark#(X) (79)
mark#(terms(X)) mark#(X) (80)
mark#(terms(X)) terms#(mark(X)) (81)
mark#(terms(X)) active#(terms(mark(X))) (82)
mark#(cons(X1,X2)) mark#(X1) (83)
mark#(cons(X1,X2)) cons#(mark(X1),X2) (84)
mark#(cons(X1,X2)) active#(cons(mark(X1),X2)) (85)
mark#(recip(X)) mark#(X) (86)
mark#(recip(X)) recip#(mark(X)) (87)
mark#(recip(X)) active#(recip(mark(X))) (88)
mark#(sqr(X)) mark#(X) (89)
mark#(sqr(X)) sqr#(mark(X)) (90)
mark#(sqr(X)) active#(sqr(mark(X))) (91)
mark#(s(X)) mark#(X) (92)
mark#(s(X)) s#(mark(X)) (93)
mark#(s(X)) active#(s(mark(X))) (94)
mark#(0) active#(0) (95)
mark#(add(X1,X2)) mark#(X2) (96)
mark#(add(X1,X2)) mark#(X1) (97)
mark#(add(X1,X2)) add#(mark(X1),mark(X2)) (98)
mark#(add(X1,X2)) active#(add(mark(X1),mark(X2))) (99)
mark#(dbl(X)) mark#(X) (100)
mark#(dbl(X)) dbl#(mark(X)) (101)
mark#(dbl(X)) active#(dbl(mark(X))) (102)
mark#(first(X1,X2)) mark#(X2) (103)
mark#(first(X1,X2)) mark#(X1) (104)
mark#(first(X1,X2)) first#(mark(X1),mark(X2)) (105)
mark#(first(X1,X2)) active#(first(mark(X1),mark(X2))) (106)
mark#(nil) active#(nil) (107)
mark#(half(X)) mark#(X) (108)
mark#(half(X)) half#(mark(X)) (109)
mark#(half(X)) active#(half(mark(X))) (110)
terms#(mark(X)) terms#(X) (111)
terms#(active(X)) terms#(X) (112)
cons#(mark(X1),X2) cons#(X1,X2) (113)
cons#(X1,mark(X2)) cons#(X1,X2) (114)
cons#(active(X1),X2) cons#(X1,X2) (115)
cons#(X1,active(X2)) cons#(X1,X2) (116)
recip#(mark(X)) recip#(X) (117)
recip#(active(X)) recip#(X) (118)
sqr#(mark(X)) sqr#(X) (119)
sqr#(active(X)) sqr#(X) (120)
s#(mark(X)) s#(X) (121)
s#(active(X)) s#(X) (122)
add#(mark(X1),X2) add#(X1,X2) (123)
add#(X1,mark(X2)) add#(X1,X2) (124)
add#(active(X1),X2) add#(X1,X2) (125)
add#(X1,active(X2)) add#(X1,X2) (126)
dbl#(mark(X)) dbl#(X) (127)
dbl#(active(X)) dbl#(X) (128)
first#(mark(X1),X2) first#(X1,X2) (129)
first#(X1,mark(X2)) first#(X1,X2) (130)
first#(active(X1),X2) first#(X1,X2) (131)
first#(X1,active(X2)) first#(X1,X2) (132)
half#(mark(X)) half#(X) (133)
half#(active(X)) half#(X) (134)

1.1 Dependency Graph Processor

The dependency pairs are split into 10 components.