Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex15_Luc98_C)

The rewrite relation of the following TRS is considered.

active(and(true,X)) mark(X) (1)
active(and(false,Y)) mark(false) (2)
active(if(true,X,Y)) mark(X) (3)
active(if(false,X,Y)) mark(Y) (4)
active(add(0,X)) mark(X) (5)
active(add(s(X),Y)) mark(s(add(X,Y))) (6)
active(first(0,X)) mark(nil) (7)
active(first(s(X),cons(Y,Z))) mark(cons(Y,first(X,Z))) (8)
active(from(X)) mark(cons(X,from(s(X)))) (9)
active(and(X1,X2)) and(active(X1),X2) (10)
active(if(X1,X2,X3)) if(active(X1),X2,X3) (11)
active(add(X1,X2)) add(active(X1),X2) (12)
active(first(X1,X2)) first(active(X1),X2) (13)
active(first(X1,X2)) first(X1,active(X2)) (14)
and(mark(X1),X2) mark(and(X1,X2)) (15)
if(mark(X1),X2,X3) mark(if(X1,X2,X3)) (16)
add(mark(X1),X2) mark(add(X1,X2)) (17)
first(mark(X1),X2) mark(first(X1,X2)) (18)
first(X1,mark(X2)) mark(first(X1,X2)) (19)
proper(and(X1,X2)) and(proper(X1),proper(X2)) (20)
proper(true) ok(true) (21)
proper(false) ok(false) (22)
proper(if(X1,X2,X3)) if(proper(X1),proper(X2),proper(X3)) (23)
proper(add(X1,X2)) add(proper(X1),proper(X2)) (24)
proper(0) ok(0) (25)
proper(s(X)) s(proper(X)) (26)
proper(first(X1,X2)) first(proper(X1),proper(X2)) (27)
proper(nil) ok(nil) (28)
proper(cons(X1,X2)) cons(proper(X1),proper(X2)) (29)
proper(from(X)) from(proper(X)) (30)
and(ok(X1),ok(X2)) ok(and(X1,X2)) (31)
if(ok(X1),ok(X2),ok(X3)) ok(if(X1,X2,X3)) (32)
add(ok(X1),ok(X2)) ok(add(X1,X2)) (33)
s(ok(X)) ok(s(X)) (34)
first(ok(X1),ok(X2)) ok(first(X1,X2)) (35)
cons(ok(X1),ok(X2)) ok(cons(X1,X2)) (36)
from(ok(X)) ok(from(X)) (37)
top(mark(X)) top(proper(X)) (38)
top(ok(X)) top(active(X)) (39)

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#(add(s(X),Y)) add#(X,Y) (40)
active#(add(s(X),Y)) s#(add(X,Y)) (41)
active#(first(s(X),cons(Y,Z))) first#(X,Z) (42)
active#(first(s(X),cons(Y,Z))) cons#(Y,first(X,Z)) (43)
active#(from(X)) s#(X) (44)
active#(from(X)) from#(s(X)) (45)
active#(from(X)) cons#(X,from(s(X))) (46)
active#(and(X1,X2)) active#(X1) (47)
active#(and(X1,X2)) and#(active(X1),X2) (48)
active#(if(X1,X2,X3)) active#(X1) (49)
active#(if(X1,X2,X3)) if#(active(X1),X2,X3) (50)
active#(add(X1,X2)) active#(X1) (51)
active#(add(X1,X2)) add#(active(X1),X2) (52)
active#(first(X1,X2)) active#(X1) (53)
active#(first(X1,X2)) first#(active(X1),X2) (54)
active#(first(X1,X2)) active#(X2) (55)
active#(first(X1,X2)) first#(X1,active(X2)) (56)
and#(mark(X1),X2) and#(X1,X2) (57)
if#(mark(X1),X2,X3) if#(X1,X2,X3) (58)
add#(mark(X1),X2) add#(X1,X2) (59)
first#(mark(X1),X2) first#(X1,X2) (60)
first#(X1,mark(X2)) first#(X1,X2) (61)
proper#(and(X1,X2)) proper#(X2) (62)
proper#(and(X1,X2)) proper#(X1) (63)
proper#(and(X1,X2)) and#(proper(X1),proper(X2)) (64)
proper#(if(X1,X2,X3)) proper#(X3) (65)
proper#(if(X1,X2,X3)) proper#(X2) (66)
proper#(if(X1,X2,X3)) proper#(X1) (67)
proper#(if(X1,X2,X3)) if#(proper(X1),proper(X2),proper(X3)) (68)
proper#(add(X1,X2)) proper#(X2) (69)
proper#(add(X1,X2)) proper#(X1) (70)
proper#(add(X1,X2)) add#(proper(X1),proper(X2)) (71)
proper#(s(X)) proper#(X) (72)
proper#(s(X)) s#(proper(X)) (73)
proper#(first(X1,X2)) proper#(X2) (74)
proper#(first(X1,X2)) proper#(X1) (75)
proper#(first(X1,X2)) first#(proper(X1),proper(X2)) (76)
proper#(cons(X1,X2)) proper#(X2) (77)
proper#(cons(X1,X2)) proper#(X1) (78)
proper#(cons(X1,X2)) cons#(proper(X1),proper(X2)) (79)
proper#(from(X)) proper#(X) (80)
proper#(from(X)) from#(proper(X)) (81)
and#(ok(X1),ok(X2)) and#(X1,X2) (82)
if#(ok(X1),ok(X2),ok(X3)) if#(X1,X2,X3) (83)
add#(ok(X1),ok(X2)) add#(X1,X2) (84)
s#(ok(X)) s#(X) (85)
first#(ok(X1),ok(X2)) first#(X1,X2) (86)
cons#(ok(X1),ok(X2)) cons#(X1,X2) (87)
from#(ok(X)) from#(X) (88)
top#(mark(X)) proper#(X) (89)
top#(mark(X)) top#(proper(X)) (90)
top#(ok(X)) active#(X) (91)
top#(ok(X)) top#(active(X)) (92)

1.1 Dependency Graph Processor

The dependency pairs are split into 10 components.