Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/PEANO_nokinds_iGM)

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(and(tt,X)) mark(X) (3)
active(isNat(0)) mark(tt) (4)
active(isNat(plus(V1,V2))) mark(and(isNat(V1),isNat(V2))) (5)
active(isNat(s(V1))) mark(isNat(V1)) (6)
active(plus(N,0)) mark(U11(isNat(N),N)) (7)
active(plus(N,s(M))) mark(U21(and(isNat(M),isNat(N)),M,N)) (8)
mark(U11(X1,X2)) active(U11(mark(X1),X2)) (9)
mark(tt) active(tt) (10)
mark(U21(X1,X2,X3)) active(U21(mark(X1),X2,X3)) (11)
mark(s(X)) active(s(mark(X))) (12)
mark(plus(X1,X2)) active(plus(mark(X1),mark(X2))) (13)
mark(and(X1,X2)) active(and(mark(X1),X2)) (14)
mark(isNat(X)) active(isNat(X)) (15)
mark(0) active(0) (16)
U11(mark(X1),X2) U11(X1,X2) (17)
U11(X1,mark(X2)) U11(X1,X2) (18)
U11(active(X1),X2) U11(X1,X2) (19)
U11(X1,active(X2)) U11(X1,X2) (20)
U21(mark(X1),X2,X3) U21(X1,X2,X3) (21)
U21(X1,mark(X2),X3) U21(X1,X2,X3) (22)
U21(X1,X2,mark(X3)) U21(X1,X2,X3) (23)
U21(active(X1),X2,X3) U21(X1,X2,X3) (24)
U21(X1,active(X2),X3) U21(X1,X2,X3) (25)
U21(X1,X2,active(X3)) U21(X1,X2,X3) (26)
s(mark(X)) s(X) (27)
s(active(X)) s(X) (28)
plus(mark(X1),X2) plus(X1,X2) (29)
plus(X1,mark(X2)) plus(X1,X2) (30)
plus(active(X1),X2) plus(X1,X2) (31)
plus(X1,active(X2)) plus(X1,X2) (32)
and(mark(X1),X2) and(X1,X2) (33)
and(X1,mark(X2)) and(X1,X2) (34)
and(active(X1),X2) and(X1,X2) (35)
and(X1,active(X2)) and(X1,X2) (36)
isNat(mark(X)) isNat(X) (37)
isNat(active(X)) isNat(X) (38)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
active#(U11(tt,N)) mark#(N) (39)
active#(U21(tt,M,N)) plus#(N,M) (40)
active#(U21(tt,M,N)) s#(plus(N,M)) (41)
active#(U21(tt,M,N)) mark#(s(plus(N,M))) (42)
active#(and(tt,X)) mark#(X) (43)
active#(isNat(0)) mark#(tt) (44)
active#(isNat(plus(V1,V2))) isNat#(V2) (45)
active#(isNat(plus(V1,V2))) isNat#(V1) (46)
active#(isNat(plus(V1,V2))) and#(isNat(V1),isNat(V2)) (47)
active#(isNat(plus(V1,V2))) mark#(and(isNat(V1),isNat(V2))) (48)
active#(isNat(s(V1))) isNat#(V1) (49)
active#(isNat(s(V1))) mark#(isNat(V1)) (50)
active#(plus(N,0)) isNat#(N) (51)
active#(plus(N,0)) U11#(isNat(N),N) (52)
active#(plus(N,0)) mark#(U11(isNat(N),N)) (53)
active#(plus(N,s(M))) isNat#(N) (54)
active#(plus(N,s(M))) isNat#(M) (55)
active#(plus(N,s(M))) and#(isNat(M),isNat(N)) (56)
active#(plus(N,s(M))) U21#(and(isNat(M),isNat(N)),M,N) (57)
active#(plus(N,s(M))) mark#(U21(and(isNat(M),isNat(N)),M,N)) (58)
mark#(U11(X1,X2)) mark#(X1) (59)
mark#(U11(X1,X2)) U11#(mark(X1),X2) (60)
mark#(U11(X1,X2)) active#(U11(mark(X1),X2)) (61)
mark#(tt) active#(tt) (62)
mark#(U21(X1,X2,X3)) mark#(X1) (63)
mark#(U21(X1,X2,X3)) U21#(mark(X1),X2,X3) (64)
mark#(U21(X1,X2,X3)) active#(U21(mark(X1),X2,X3)) (65)
mark#(s(X)) mark#(X) (66)
mark#(s(X)) s#(mark(X)) (67)
mark#(s(X)) active#(s(mark(X))) (68)
mark#(plus(X1,X2)) mark#(X2) (69)
mark#(plus(X1,X2)) mark#(X1) (70)
mark#(plus(X1,X2)) plus#(mark(X1),mark(X2)) (71)
mark#(plus(X1,X2)) active#(plus(mark(X1),mark(X2))) (72)
mark#(and(X1,X2)) mark#(X1) (73)
mark#(and(X1,X2)) and#(mark(X1),X2) (74)
mark#(and(X1,X2)) active#(and(mark(X1),X2)) (75)
mark#(isNat(X)) active#(isNat(X)) (76)
mark#(0) active#(0) (77)
U11#(mark(X1),X2) U11#(X1,X2) (78)
U11#(X1,mark(X2)) U11#(X1,X2) (79)
U11#(active(X1),X2) U11#(X1,X2) (80)
U11#(X1,active(X2)) U11#(X1,X2) (81)
U21#(mark(X1),X2,X3) U21#(X1,X2,X3) (82)
U21#(X1,mark(X2),X3) U21#(X1,X2,X3) (83)
U21#(X1,X2,mark(X3)) U21#(X1,X2,X3) (84)
U21#(active(X1),X2,X3) U21#(X1,X2,X3) (85)
U21#(X1,active(X2),X3) U21#(X1,X2,X3) (86)
U21#(X1,X2,active(X3)) U21#(X1,X2,X3) (87)
s#(mark(X)) s#(X) (88)
s#(active(X)) s#(X) (89)
plus#(mark(X1),X2) plus#(X1,X2) (90)
plus#(X1,mark(X2)) plus#(X1,X2) (91)
plus#(active(X1),X2) plus#(X1,X2) (92)
plus#(X1,active(X2)) plus#(X1,X2) (93)
and#(mark(X1),X2) and#(X1,X2) (94)
and#(X1,mark(X2)) and#(X1,X2) (95)
and#(active(X1),X2) and#(X1,X2) (96)
and#(X1,active(X2)) and#(X1,X2) (97)
isNat#(mark(X)) isNat#(X) (98)
isNat#(active(X)) isNat#(X) (99)

1.1 Dependency Graph Processor

The dependency pairs are split into 7 components.