Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/MYNAT_complete_Z)

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(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(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)
activate(n__0) 0 (32)
activate(n__plus(X1,X2)) plus(X1,X2) (33)
activate(n__isNatKind(X)) isNatKind(X) (34)
activate(n__s(X)) s(X) (35)
activate(n__x(X1,X2)) x(X1,X2) (36)
activate(n__and(X1,X2)) and(X1,X2) (37)
activate(X) X (38)

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

1.1 Dependency Graph Processor

The dependency pairs are split into 1 component.