Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/MYNAT_complete_FR)

The rewrite relation of the following TRS is considered.

U11(tt,V1,V2) U12(isNat(activate(V1)),activate(V2)) (1)
U12(tt,V2) U13(isNat(activate(V2))) (2)
U13(tt) tt (3)
U21(tt,V1) U22(isNat(activate(V1))) (4)
U22(tt) tt (5)
U31(tt,V1,V2) U32(isNat(activate(V1)),activate(V2)) (6)
U32(tt,V2) U33(isNat(activate(V2))) (7)
U33(tt) tt (8)
U41(tt,N) activate(N) (9)
U51(tt,M,N) s(plus(activate(N),activate(M))) (10)
U61(tt) 0 (11)
U71(tt,M,N) plus(x(activate(N),activate(M)),activate(N)) (12)
and(tt,X) activate(X) (13)
isNat(n__0) tt (14)
isNat(n__plus(V1,V2)) U11(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) (15)
isNat(n__s(V1)) U21(isNatKind(activate(V1)),activate(V1)) (16)
isNat(n__x(V1,V2)) U31(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) (17)
isNatKind(n__0) tt (18)
isNatKind(n__plus(V1,V2)) and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (19)
isNatKind(n__s(V1)) isNatKind(activate(V1)) (20)
isNatKind(n__x(V1,V2)) and(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (21)
plus(N,0) U41(and(isNat(N),n__isNatKind(N)),N) (22)
plus(N,s(M)) U51(and(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))),M,N) (23)
x(N,0) U61(and(isNat(N),n__isNatKind(N))) (24)
x(N,s(M)) U71(and(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))),M,N) (25)
0 n__0 (26)
plus(X1,X2) n__plus(X1,X2) (27)
isNatKind(X) n__isNatKind(X) (28)
s(X) n__s(X) (29)
x(X1,X2) n__x(X1,X2) (30)
and(X1,X2) n__and(X1,X2) (31)
isNat(X) n__isNat(X) (32)
activate(n__0) 0 (33)
activate(n__plus(X1,X2)) plus(activate(X1),activate(X2)) (34)
activate(n__isNatKind(X)) isNatKind(X) (35)
activate(n__s(X)) s(activate(X)) (36)
activate(n__x(X1,X2)) x(activate(X1),activate(X2)) (37)
activate(n__and(X1,X2)) and(activate(X1),X2) (38)
activate(n__isNat(X)) isNat(X) (39)
activate(X) X (40)

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.
U12#(tt,V2) isNat#(activate(V2)) (41)
activate#(n__0) 0# (42)
x#(N,s(M)) U71#(and(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))),M,N) (43)
U32#(tt,V2) U33#(isNat(activate(V2))) (44)
U21#(tt,V1) isNat#(activate(V1)) (45)
isNatKind#(n__x(V1,V2)) activate#(V2) (46)
plus#(N,0) isNat#(N) (47)
U51#(tt,M,N) activate#(M) (48)
U51#(tt,M,N) activate#(N) (49)
U32#(tt,V2) activate#(V2) (50)
U11#(tt,V1,V2) activate#(V1) (51)
activate#(n__plus(X1,X2)) plus#(activate(X1),activate(X2)) (52)
isNat#(n__x(V1,V2)) activate#(V1) (53)
U11#(tt,V1,V2) U12#(isNat(activate(V1)),activate(V2)) (54)
activate#(n__plus(X1,X2)) activate#(X1) (55)
isNat#(n__plus(V1,V2)) U11#(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) (56)
U11#(tt,V1,V2) activate#(V2) (57)
isNatKind#(n__plus(V1,V2)) isNatKind#(activate(V1)) (58)
activate#(n__s(X)) s#(activate(X)) (59)
activate#(n__isNat(X)) isNat#(X) (60)
activate#(n__x(X1,X2)) activate#(X1) (61)
isNatKind#(n__plus(V1,V2)) activate#(V1) (62)
isNat#(n__x(V1,V2)) activate#(V1) (53)
isNat#(n__s(V1)) U21#(isNatKind(activate(V1)),activate(V1)) (63)
U51#(tt,M,N) plus#(activate(N),activate(M)) (64)
isNat#(n__x(V1,V2)) and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (65)
U31#(tt,V1,V2) activate#(V2) (66)
activate#(n__and(X1,X2)) activate#(X1) (67)
U31#(tt,V1,V2) isNat#(activate(V1)) (68)
isNatKind#(n__plus(V1,V2)) and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (69)
isNat#(n__plus(V1,V2)) and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (70)
U71#(tt,M,N) plus#(x(activate(N),activate(M)),activate(N)) (71)
isNat#(n__s(V1)) activate#(V1) (72)
plus#(N,s(M)) isNat#(M) (73)
isNat#(n__plus(V1,V2)) activate#(V2) (74)
isNat#(n__plus(V1,V2)) activate#(V1) (75)
plus#(N,0) and#(isNat(N),n__isNatKind(N)) (76)
isNat#(n__s(V1)) activate#(V1) (72)
U31#(tt,V1,V2) activate#(V1) (77)
x#(N,s(M)) and#(isNat(M),n__isNatKind(M)) (78)
isNat#(n__plus(V1,V2)) activate#(V2) (74)
isNat#(n__x(V1,V2)) activate#(V2) (79)
U21#(tt,V1) U22#(isNat(activate(V1))) (80)
and#(tt,X) activate#(X) (81)
activate#(n__s(X)) activate#(X) (82)
x#(N,s(M)) and#(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))) (83)
isNat#(n__x(V1,V2)) isNatKind#(activate(V1)) (84)
activate#(n__plus(X1,X2)) activate#(X2) (85)
U71#(tt,M,N) x#(activate(N),activate(M)) (86)
plus#(N,s(M)) U51#(and(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))),M,N) (87)
activate#(n__x(X1,X2)) activate#(X2) (88)
U51#(tt,M,N) s#(plus(activate(N),activate(M))) (89)
U31#(tt,V1,V2) U32#(isNat(activate(V1)),activate(V2)) (90)
isNatKind#(n__x(V1,V2)) isNatKind#(activate(V1)) (91)
isNatKind#(n__s(V1)) isNatKind#(activate(V1)) (92)
U11#(tt,V1,V2) isNat#(activate(V1)) (93)
activate#(n__x(X1,X2)) x#(activate(X1),activate(X2)) (94)
plus#(N,0) U41#(and(isNat(N),n__isNatKind(N)),N) (95)
isNatKind#(n__x(V1,V2)) activate#(V1) (96)
U71#(tt,M,N) activate#(N) (97)
plus#(N,s(M)) and#(isNat(M),n__isNatKind(M)) (98)
isNatKind#(n__s(V1)) activate#(V1) (99)
U21#(tt,V1) activate#(V1) (100)
U71#(tt,M,N) activate#(M) (101)
isNatKind#(n__plus(V1,V2)) activate#(V2) (102)
x#(N,0) U61#(and(isNat(N),n__isNatKind(N))) (103)
x#(N,s(M)) isNat#(M) (104)
x#(N,0) isNat#(N) (105)
isNatKind#(n__x(V1,V2)) and#(isNatKind(activate(V1)),n__isNatKind(activate(V2))) (106)
U71#(tt,M,N) activate#(N) (97)
isNat#(n__s(V1)) isNatKind#(activate(V1)) (107)
U32#(tt,V2) isNat#(activate(V2)) (108)
plus#(N,s(M)) and#(and(isNat(M),n__isNatKind(M)),n__and(n__isNat(N),n__isNatKind(N))) (109)
U61#(tt) 0# (110)
U12#(tt,V2) activate#(V2) (111)
isNat#(n__plus(V1,V2)) isNatKind#(activate(V1)) (112)
U12#(tt,V2) U13#(isNat(activate(V2))) (113)
isNat#(n__x(V1,V2)) activate#(V2) (79)
activate#(n__and(X1,X2)) and#(activate(X1),X2) (114)
U41#(tt,N) activate#(N) (115)
activate#(n__isNatKind(X)) isNatKind#(X) (116)
isNat#(n__plus(V1,V2)) activate#(V1) (75)
isNat#(n__x(V1,V2)) U31#(and(isNatKind(activate(V1)),n__isNatKind(activate(V2))),activate(V1),activate(V2)) (117)
x#(N,0) and#(isNat(N),n__isNatKind(N)) (118)

1.1 Dependency Graph Processor

The dependency pairs are split into 1 component.