Certification Problem

Input (TPDB TRS_Innermost/Transformed_CSR_innermost_04/ExSec11_1_Luc02a_C)

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)
active(terms(X)) terms(active(X)) (14)
active(cons(X1,X2)) cons(active(X1),X2) (15)
active(recip(X)) recip(active(X)) (16)
active(sqr(X)) sqr(active(X)) (17)
active(s(X)) s(active(X)) (18)
active(add(X1,X2)) add(active(X1),X2) (19)
active(add(X1,X2)) add(X1,active(X2)) (20)
active(dbl(X)) dbl(active(X)) (21)
active(first(X1,X2)) first(active(X1),X2) (22)
active(first(X1,X2)) first(X1,active(X2)) (23)
active(half(X)) half(active(X)) (24)
terms(mark(X)) mark(terms(X)) (25)
cons(mark(X1),X2) mark(cons(X1,X2)) (26)
recip(mark(X)) mark(recip(X)) (27)
sqr(mark(X)) mark(sqr(X)) (28)
s(mark(X)) mark(s(X)) (29)
add(mark(X1),X2) mark(add(X1,X2)) (30)
add(X1,mark(X2)) mark(add(X1,X2)) (31)
dbl(mark(X)) mark(dbl(X)) (32)
first(mark(X1),X2) mark(first(X1,X2)) (33)
first(X1,mark(X2)) mark(first(X1,X2)) (34)
half(mark(X)) mark(half(X)) (35)
proper(terms(X)) terms(proper(X)) (36)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (37)
proper(recip(X)) recip(proper(X)) (38)
proper(sqr(X)) sqr(proper(X)) (39)
proper(s(X)) s(proper(X)) (40)
proper(0) ok(0) (41)
proper(add(X1,X2)) add(proper(X1),proper(X2)) (42)
proper(dbl(X)) dbl(proper(X)) (43)
proper(first(X1,X2)) first(proper(X1),proper(X2)) (44)
proper(nil) ok(nil) (45)
proper(half(X)) half(proper(X)) (46)
terms(ok(X)) ok(terms(X)) (47)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (48)
recip(ok(X)) ok(recip(X)) (49)
sqr(ok(X)) ok(sqr(X)) (50)
s(ok(X)) ok(s(X)) (51)
add(ok(X1),ok(X2)) ok(add(X1,X2)) (52)
dbl(ok(X)) ok(dbl(X)) (53)
first(ok(X1),ok(X2)) ok(first(X1,X2)) (54)
half(ok(X)) ok(half(X)) (55)
top(mark(X)) top(proper(X)) (56)
top(ok(X)) top(active(X)) (57)
The evaluation strategy is innermost.

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
active#(terms(N)) cons#(recip(sqr(N)),terms(s(N))) (58)
active#(terms(N)) recip#(sqr(N)) (59)
active#(terms(N)) sqr#(N) (60)
active#(terms(N)) terms#(s(N)) (61)
active#(terms(N)) s#(N) (62)
active#(sqr(s(X))) s#(add(sqr(X),dbl(X))) (63)
active#(sqr(s(X))) add#(sqr(X),dbl(X)) (64)
active#(sqr(s(X))) sqr#(X) (65)
active#(sqr(s(X))) dbl#(X) (66)
active#(dbl(s(X))) s#(s(dbl(X))) (67)
active#(dbl(s(X))) s#(dbl(X)) (68)
active#(dbl(s(X))) dbl#(X) (69)
active#(add(s(X),Y)) s#(add(X,Y)) (70)
active#(add(s(X),Y)) add#(X,Y) (71)
active#(first(s(X),cons(Y,Z))) cons#(Y,first(X,Z)) (72)
active#(first(s(X),cons(Y,Z))) first#(X,Z) (73)
active#(half(s(s(X)))) s#(half(X)) (74)
active#(half(s(s(X)))) half#(X) (75)
active#(terms(X)) terms#(active(X)) (76)
active#(terms(X)) active#(X) (77)
active#(cons(X1,X2)) cons#(active(X1),X2) (78)
active#(cons(X1,X2)) active#(X1) (79)
active#(recip(X)) recip#(active(X)) (80)
active#(recip(X)) active#(X) (81)
active#(sqr(X)) sqr#(active(X)) (82)
active#(sqr(X)) active#(X) (83)
active#(s(X)) s#(active(X)) (84)
active#(s(X)) active#(X) (85)
active#(add(X1,X2)) add#(active(X1),X2) (86)
active#(add(X1,X2)) active#(X1) (87)
active#(add(X1,X2)) add#(X1,active(X2)) (88)
active#(add(X1,X2)) active#(X2) (89)
active#(dbl(X)) dbl#(active(X)) (90)
active#(dbl(X)) active#(X) (91)
active#(first(X1,X2)) first#(active(X1),X2) (92)
active#(first(X1,X2)) active#(X1) (93)
active#(first(X1,X2)) first#(X1,active(X2)) (94)
active#(first(X1,X2)) active#(X2) (95)
active#(half(X)) half#(active(X)) (96)
active#(half(X)) active#(X) (97)
terms#(mark(X)) terms#(X) (98)
cons#(mark(X1),X2) cons#(X1,X2) (99)
recip#(mark(X)) recip#(X) (100)
sqr#(mark(X)) sqr#(X) (101)
s#(mark(X)) s#(X) (102)
add#(mark(X1),X2) add#(X1,X2) (103)
add#(X1,mark(X2)) add#(X1,X2) (104)
dbl#(mark(X)) dbl#(X) (105)
first#(mark(X1),X2) first#(X1,X2) (106)
first#(X1,mark(X2)) first#(X1,X2) (107)
half#(mark(X)) half#(X) (108)
proper#(terms(X)) terms#(proper(X)) (109)
proper#(terms(X)) proper#(X) (110)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (111)
proper#(cons(X1,X2)) proper#(X1) (112)
proper#(cons(X1,X2)) proper#(X2) (113)
proper#(recip(X)) recip#(proper(X)) (114)
proper#(recip(X)) proper#(X) (115)
proper#(sqr(X)) sqr#(proper(X)) (116)
proper#(sqr(X)) proper#(X) (117)
proper#(s(X)) s#(proper(X)) (118)
proper#(s(X)) proper#(X) (119)
proper#(add(X1,X2)) add#(proper(X1),proper(X2)) (120)
proper#(add(X1,X2)) proper#(X1) (121)
proper#(add(X1,X2)) proper#(X2) (122)
proper#(dbl(X)) dbl#(proper(X)) (123)
proper#(dbl(X)) proper#(X) (124)
proper#(first(X1,X2)) first#(proper(X1),proper(X2)) (125)
proper#(first(X1,X2)) proper#(X1) (126)
proper#(first(X1,X2)) proper#(X2) (127)
proper#(half(X)) half#(proper(X)) (128)
proper#(half(X)) proper#(X) (129)
terms#(ok(X)) terms#(X) (130)
cons#(ok(X1),ok(X2)) cons#(X1,X2) (131)
recip#(ok(X)) recip#(X) (132)
sqr#(ok(X)) sqr#(X) (133)
s#(ok(X)) s#(X) (134)
add#(ok(X1),ok(X2)) add#(X1,X2) (135)
dbl#(ok(X)) dbl#(X) (136)
first#(ok(X1),ok(X2)) first#(X1,X2) (137)
half#(ok(X)) half#(X) (138)
top#(mark(X)) top#(proper(X)) (139)
top#(mark(X)) proper#(X) (140)
top#(ok(X)) top#(active(X)) (141)
top#(ok(X)) active#(X) (142)

1.1 Dependency Graph Processor

The dependency pairs are split into 12 components.