Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/PALINDROME_nokinds_iGM)

The rewrite relation of the following TRS is considered.

active(__(__(X,Y),Z)) mark(__(X,__(Y,Z))) (1)
active(__(X,nil)) mark(X) (2)
active(__(nil,X)) mark(X) (3)
active(and(tt,X)) mark(X) (4)
active(isList(V)) mark(isNeList(V)) (5)
active(isList(nil)) mark(tt) (6)
active(isList(__(V1,V2))) mark(and(isList(V1),isList(V2))) (7)
active(isNeList(V)) mark(isQid(V)) (8)
active(isNeList(__(V1,V2))) mark(and(isList(V1),isNeList(V2))) (9)
active(isNeList(__(V1,V2))) mark(and(isNeList(V1),isList(V2))) (10)
active(isNePal(V)) mark(isQid(V)) (11)
active(isNePal(__(I,__(P,I)))) mark(and(isQid(I),isPal(P))) (12)
active(isPal(V)) mark(isNePal(V)) (13)
active(isPal(nil)) mark(tt) (14)
active(isQid(a)) mark(tt) (15)
active(isQid(e)) mark(tt) (16)
active(isQid(i)) mark(tt) (17)
active(isQid(o)) mark(tt) (18)
active(isQid(u)) mark(tt) (19)
mark(__(X1,X2)) active(__(mark(X1),mark(X2))) (20)
mark(nil) active(nil) (21)
mark(and(X1,X2)) active(and(mark(X1),X2)) (22)
mark(tt) active(tt) (23)
mark(isList(X)) active(isList(X)) (24)
mark(isNeList(X)) active(isNeList(X)) (25)
mark(isQid(X)) active(isQid(X)) (26)
mark(isNePal(X)) active(isNePal(X)) (27)
mark(isPal(X)) active(isPal(X)) (28)
mark(a) active(a) (29)
mark(e) active(e) (30)
mark(i) active(i) (31)
mark(o) active(o) (32)
mark(u) active(u) (33)
__(mark(X1),X2) __(X1,X2) (34)
__(X1,mark(X2)) __(X1,X2) (35)
__(active(X1),X2) __(X1,X2) (36)
__(X1,active(X2)) __(X1,X2) (37)
and(mark(X1),X2) and(X1,X2) (38)
and(X1,mark(X2)) and(X1,X2) (39)
and(active(X1),X2) and(X1,X2) (40)
and(X1,active(X2)) and(X1,X2) (41)
isList(mark(X)) isList(X) (42)
isList(active(X)) isList(X) (43)
isNeList(mark(X)) isNeList(X) (44)
isNeList(active(X)) isNeList(X) (45)
isQid(mark(X)) isQid(X) (46)
isQid(active(X)) isQid(X) (47)
isNePal(mark(X)) isNePal(X) (48)
isNePal(active(X)) isNePal(X) (49)
isPal(mark(X)) isPal(X) (50)
isPal(active(X)) isPal(X) (51)

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.
isList#(active(X)) isList#(X) (52)
and#(X1,mark(X2)) and#(X1,X2) (53)
active#(isNePal(__(I,__(P,I)))) isPal#(P) (54)
mark#(__(X1,X2)) active#(__(mark(X1),mark(X2))) (55)
active#(__(__(X,Y),Z)) mark#(__(X,__(Y,Z))) (56)
active#(isNeList(__(V1,V2))) isNeList#(V1) (57)
active#(isList(__(V1,V2))) isList#(V2) (58)
active#(isList(__(V1,V2))) isList#(V1) (59)
mark#(__(X1,X2)) mark#(X1) (60)
isPal#(mark(X)) isPal#(X) (61)
active#(isNeList(__(V1,V2))) isList#(V2) (62)
mark#(and(X1,X2)) active#(and(mark(X1),X2)) (63)
active#(isQid(a)) mark#(tt) (64)
mark#(u) active#(u) (65)
active#(isQid(o)) mark#(tt) (66)
active#(isQid(i)) mark#(tt) (67)
mark#(isQid(X)) active#(isQid(X)) (68)
mark#(__(X1,X2)) mark#(X2) (69)
isList#(mark(X)) isList#(X) (70)
mark#(o) active#(o) (71)
mark#(and(X1,X2)) mark#(X1) (72)
active#(__(__(X,Y),Z)) __#(X,__(Y,Z)) (73)
active#(isList(__(V1,V2))) and#(isList(V1),isList(V2)) (74)
isNeList#(mark(X)) isNeList#(X) (75)
and#(active(X1),X2) and#(X1,X2) (76)
isQid#(active(X)) isQid#(X) (77)
and#(mark(X1),X2) and#(X1,X2) (78)
mark#(isNePal(X)) active#(isNePal(X)) (79)
mark#(tt) active#(tt) (80)
active#(isNeList(V)) isQid#(V) (81)
mark#(isList(X)) active#(isList(X)) (82)
active#(isNeList(__(V1,V2))) and#(isNeList(V1),isList(V2)) (83)
active#(isNeList(V)) mark#(isQid(V)) (84)
active#(isList(nil)) mark#(tt) (85)
active#(isPal(nil)) mark#(tt) (86)
__#(mark(X1),X2) __#(X1,X2) (87)
isPal#(active(X)) isPal#(X) (88)
__#(active(X1),X2) __#(X1,X2) (89)
mark#(i) active#(i) (90)
mark#(isPal(X)) active#(isPal(X)) (91)
active#(isList(V)) mark#(isNeList(V)) (92)
isNeList#(active(X)) isNeList#(X) (93)
active#(isNeList(__(V1,V2))) isNeList#(V2) (94)
and#(X1,active(X2)) and#(X1,X2) (95)
active#(isList(__(V1,V2))) mark#(and(isList(V1),isList(V2))) (96)
isNePal#(mark(X)) isNePal#(X) (97)
active#(isQid(e)) mark#(tt) (98)
isNePal#(active(X)) isNePal#(X) (99)
active#(and(tt,X)) mark#(X) (100)
isQid#(mark(X)) isQid#(X) (101)
active#(isNeList(__(V1,V2))) mark#(and(isNeList(V1),isList(V2))) (102)
active#(__(nil,X)) mark#(X) (103)
active#(isNePal(__(I,__(P,I)))) isQid#(I) (104)
active#(isNePal(V)) isQid#(V) (105)
mark#(isNeList(X)) active#(isNeList(X)) (106)
active#(isNePal(__(I,__(P,I)))) and#(isQid(I),isPal(P)) (107)
active#(isQid(u)) mark#(tt) (108)
active#(isNeList(__(V1,V2))) mark#(and(isList(V1),isNeList(V2))) (109)
mark#(e) active#(e) (110)
active#(isNeList(__(V1,V2))) isList#(V1) (111)
mark#(nil) active#(nil) (112)
active#(isNePal(__(I,__(P,I)))) mark#(and(isQid(I),isPal(P))) (113)
active#(__(__(X,Y),Z)) __#(Y,Z) (114)
mark#(__(X1,X2)) __#(mark(X1),mark(X2)) (115)
active#(isNePal(V)) mark#(isQid(V)) (116)
active#(isPal(V)) isNePal#(V) (117)
mark#(a) active#(a) (118)
active#(__(X,nil)) mark#(X) (119)
mark#(and(X1,X2)) and#(mark(X1),X2) (120)
__#(X1,active(X2)) __#(X1,X2) (121)
active#(isPal(V)) mark#(isNePal(V)) (122)
__#(X1,mark(X2)) __#(X1,X2) (123)
active#(isList(V)) isNeList#(V) (124)
active#(isNeList(__(V1,V2))) and#(isList(V1),isNeList(V2)) (125)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.