Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/MYNAT_nokinds_C)

The rewrite relation of the following TRS is considered.

active(U11(tt,N)) mark(N) (1)
active(U21(tt,M,N)) mark(s(plus(N,M))) (2)
active(U31(tt)) mark(0) (3)
active(U41(tt,M,N)) mark(plus(x(N,M),N)) (4)
active(and(tt,X)) mark(X) (5)
active(isNat(0)) mark(tt) (6)
active(isNat(plus(V1,V2))) mark(and(isNat(V1),isNat(V2))) (7)
active(isNat(s(V1))) mark(isNat(V1)) (8)
active(isNat(x(V1,V2))) mark(and(isNat(V1),isNat(V2))) (9)
active(plus(N,0)) mark(U11(isNat(N),N)) (10)
active(plus(N,s(M))) mark(U21(and(isNat(M),isNat(N)),M,N)) (11)
active(x(N,0)) mark(U31(isNat(N))) (12)
active(x(N,s(M))) mark(U41(and(isNat(M),isNat(N)),M,N)) (13)
active(U11(X1,X2)) U11(active(X1),X2) (14)
active(U21(X1,X2,X3)) U21(active(X1),X2,X3) (15)
active(s(X)) s(active(X)) (16)
active(plus(X1,X2)) plus(active(X1),X2) (17)
active(plus(X1,X2)) plus(X1,active(X2)) (18)
active(U31(X)) U31(active(X)) (19)
active(U41(X1,X2,X3)) U41(active(X1),X2,X3) (20)
active(x(X1,X2)) x(active(X1),X2) (21)
active(x(X1,X2)) x(X1,active(X2)) (22)
active(and(X1,X2)) and(active(X1),X2) (23)
U11(mark(X1),X2) mark(U11(X1,X2)) (24)
U21(mark(X1),X2,X3) mark(U21(X1,X2,X3)) (25)
s(mark(X)) mark(s(X)) (26)
plus(mark(X1),X2) mark(plus(X1,X2)) (27)
plus(X1,mark(X2)) mark(plus(X1,X2)) (28)
U31(mark(X)) mark(U31(X)) (29)
U41(mark(X1),X2,X3) mark(U41(X1,X2,X3)) (30)
x(mark(X1),X2) mark(x(X1,X2)) (31)
x(X1,mark(X2)) mark(x(X1,X2)) (32)
and(mark(X1),X2) mark(and(X1,X2)) (33)
proper(U11(X1,X2)) U11(proper(X1),proper(X2)) (34)
proper(tt) ok(tt) (35)
proper(U21(X1,X2,X3)) U21(proper(X1),proper(X2),proper(X3)) (36)
proper(s(X)) s(proper(X)) (37)
proper(plus(X1,X2)) plus(proper(X1),proper(X2)) (38)
proper(U31(X)) U31(proper(X)) (39)
proper(0) ok(0) (40)
proper(U41(X1,X2,X3)) U41(proper(X1),proper(X2),proper(X3)) (41)
proper(x(X1,X2)) x(proper(X1),proper(X2)) (42)
proper(and(X1,X2)) and(proper(X1),proper(X2)) (43)
proper(isNat(X)) isNat(proper(X)) (44)
U11(ok(X1),ok(X2)) ok(U11(X1,X2)) (45)
U21(ok(X1),ok(X2),ok(X3)) ok(U21(X1,X2,X3)) (46)
s(ok(X)) ok(s(X)) (47)
plus(ok(X1),ok(X2)) ok(plus(X1,X2)) (48)
U31(ok(X)) ok(U31(X)) (49)
U41(ok(X1),ok(X2),ok(X3)) ok(U41(X1,X2,X3)) (50)
x(ok(X1),ok(X2)) ok(x(X1,X2)) (51)
and(ok(X1),ok(X2)) ok(and(X1,X2)) (52)
isNat(ok(X)) ok(isNat(X)) (53)
top(mark(X)) top(proper(X)) (54)
top(ok(X)) top(active(X)) (55)

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.
active#(U21(tt,M,N)) plus#(N,M) (56)
active#(U21(X1,X2,X3)) U21#(active(X1),X2,X3) (57)
x#(mark(X1),X2) x#(X1,X2) (58)
active#(x(N,s(M))) isNat#(N) (59)
active#(plus(N,s(M))) isNat#(M) (60)
top#(mark(X)) top#(proper(X)) (61)
proper#(U11(X1,X2)) proper#(X1) (62)
U41#(mark(X1),X2,X3) U41#(X1,X2,X3) (63)
active#(x(N,0)) isNat#(N) (64)
active#(x(N,0)) U31#(isNat(N)) (65)
U11#(mark(X1),X2) U11#(X1,X2) (66)
active#(plus(X1,X2)) plus#(X1,active(X2)) (67)
active#(U31(X)) active#(X) (68)
and#(ok(X1),ok(X2)) and#(X1,X2) (69)
active#(isNat(plus(V1,V2))) isNat#(V1) (70)
x#(X1,mark(X2)) x#(X1,X2) (71)
U31#(ok(X)) U31#(X) (72)
proper#(U21(X1,X2,X3)) U21#(proper(X1),proper(X2),proper(X3)) (73)
s#(mark(X)) s#(X) (74)
active#(plus(N,0)) isNat#(N) (75)
proper#(isNat(X)) proper#(X) (76)
active#(and(X1,X2)) and#(active(X1),X2) (77)
U31#(mark(X)) U31#(X) (78)
and#(mark(X1),X2) and#(X1,X2) (79)
proper#(U31(X)) U31#(proper(X)) (80)
proper#(U11(X1,X2)) proper#(X2) (81)
U11#(ok(X1),ok(X2)) U11#(X1,X2) (82)
U41#(ok(X1),ok(X2),ok(X3)) U41#(X1,X2,X3) (83)
active#(U41(X1,X2,X3)) active#(X1) (84)
proper#(U41(X1,X2,X3)) proper#(X2) (85)
proper#(x(X1,X2)) proper#(X1) (86)
proper#(U41(X1,X2,X3)) U41#(proper(X1),proper(X2),proper(X3)) (87)
active#(plus(N,0)) U11#(isNat(N),N) (88)
proper#(U21(X1,X2,X3)) proper#(X1) (89)
top#(ok(X)) active#(X) (90)
active#(plus(X1,X2)) active#(X1) (91)
top#(ok(X)) top#(active(X)) (92)
active#(s(X)) s#(active(X)) (93)
proper#(U21(X1,X2,X3)) proper#(X3) (94)
active#(U11(X1,X2)) active#(X1) (95)
active#(plus(X1,X2)) plus#(active(X1),X2) (96)
proper#(U41(X1,X2,X3)) proper#(X1) (97)
active#(isNat(x(V1,V2))) isNat#(V1) (98)
active#(x(X1,X2)) x#(active(X1),X2) (99)
proper#(U31(X)) proper#(X) (100)
active#(U41(tt,M,N)) x#(N,M) (101)
active#(s(X)) active#(X) (102)
proper#(U41(X1,X2,X3)) proper#(X3) (103)
plus#(X1,mark(X2)) plus#(X1,X2) (104)
active#(isNat(x(V1,V2))) and#(isNat(V1),isNat(V2)) (105)
active#(isNat(plus(V1,V2))) and#(isNat(V1),isNat(V2)) (106)
U21#(mark(X1),X2,X3) U21#(X1,X2,X3) (107)
x#(ok(X1),ok(X2)) x#(X1,X2) (108)
proper#(plus(X1,X2)) plus#(proper(X1),proper(X2)) (109)
active#(U41(tt,M,N)) plus#(x(N,M),N) (110)
U21#(ok(X1),ok(X2),ok(X3)) U21#(X1,X2,X3) (111)
active#(and(X1,X2)) active#(X1) (112)
proper#(x(X1,X2)) proper#(X2) (113)
active#(plus(X1,X2)) active#(X2) (114)
active#(x(X1,X2)) active#(X2) (115)
active#(plus(N,s(M))) U21#(and(isNat(M),isNat(N)),M,N) (116)
active#(U31(X)) U31#(active(X)) (117)
proper#(and(X1,X2)) proper#(X2) (118)
active#(U11(X1,X2)) U11#(active(X1),X2) (119)
proper#(U11(X1,X2)) U11#(proper(X1),proper(X2)) (120)
active#(x(N,s(M))) isNat#(M) (121)
proper#(plus(X1,X2)) proper#(X2) (122)
active#(plus(N,s(M))) and#(isNat(M),isNat(N)) (123)
top#(mark(X)) proper#(X) (124)
active#(U21(X1,X2,X3)) active#(X1) (125)
active#(x(N,s(M))) and#(isNat(M),isNat(N)) (126)
proper#(isNat(X)) isNat#(proper(X)) (127)
s#(ok(X)) s#(X) (128)
active#(isNat(x(V1,V2))) isNat#(V2) (129)
plus#(ok(X1),ok(X2)) plus#(X1,X2) (130)
active#(x(X1,X2)) x#(X1,active(X2)) (131)
active#(x(N,s(M))) U41#(and(isNat(M),isNat(N)),M,N) (132)
active#(isNat(s(V1))) isNat#(V1) (133)
plus#(mark(X1),X2) plus#(X1,X2) (134)
active#(plus(N,s(M))) isNat#(N) (135)
proper#(plus(X1,X2)) proper#(X1) (136)
proper#(s(X)) proper#(X) (137)
proper#(and(X1,X2)) and#(proper(X1),proper(X2)) (138)
proper#(U21(X1,X2,X3)) proper#(X2) (139)
active#(U21(tt,M,N)) s#(plus(N,M)) (140)
active#(isNat(plus(V1,V2))) isNat#(V2) (141)
proper#(x(X1,X2)) x#(proper(X1),proper(X2)) (142)
proper#(s(X)) s#(proper(X)) (143)
proper#(and(X1,X2)) proper#(X1) (144)
active#(x(X1,X2)) active#(X1) (145)
active#(U41(X1,X2,X3)) U41#(active(X1),X2,X3) (146)
isNat#(ok(X)) isNat#(X) (147)

1.1 Dependency Graph Processor

The dependency pairs are split into 12 components.