Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex15_Luc98_iGM)

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)
mark(and(X1,X2)) active(and(mark(X1),X2)) (10)
mark(true) active(true) (11)
mark(false) active(false) (12)
mark(if(X1,X2,X3)) active(if(mark(X1),X2,X3)) (13)
mark(add(X1,X2)) active(add(mark(X1),X2)) (14)
mark(0) active(0) (15)
mark(s(X)) active(s(X)) (16)
mark(first(X1,X2)) active(first(mark(X1),mark(X2))) (17)
mark(nil) active(nil) (18)
mark(cons(X1,X2)) active(cons(X1,X2)) (19)
mark(from(X)) active(from(X)) (20)
and(mark(X1),X2) and(X1,X2) (21)
and(X1,mark(X2)) and(X1,X2) (22)
and(active(X1),X2) and(X1,X2) (23)
and(X1,active(X2)) and(X1,X2) (24)
if(mark(X1),X2,X3) if(X1,X2,X3) (25)
if(X1,mark(X2),X3) if(X1,X2,X3) (26)
if(X1,X2,mark(X3)) if(X1,X2,X3) (27)
if(active(X1),X2,X3) if(X1,X2,X3) (28)
if(X1,active(X2),X3) if(X1,X2,X3) (29)
if(X1,X2,active(X3)) if(X1,X2,X3) (30)
add(mark(X1),X2) add(X1,X2) (31)
add(X1,mark(X2)) add(X1,X2) (32)
add(active(X1),X2) add(X1,X2) (33)
add(X1,active(X2)) add(X1,X2) (34)
s(mark(X)) s(X) (35)
s(active(X)) s(X) (36)
first(mark(X1),X2) first(X1,X2) (37)
first(X1,mark(X2)) first(X1,X2) (38)
first(active(X1),X2) first(X1,X2) (39)
first(X1,active(X2)) first(X1,X2) (40)
cons(mark(X1),X2) cons(X1,X2) (41)
cons(X1,mark(X2)) cons(X1,X2) (42)
cons(active(X1),X2) cons(X1,X2) (43)
cons(X1,active(X2)) cons(X1,X2) (44)
from(mark(X)) from(X) (45)
from(active(X)) from(X) (46)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by AProVE @ termCOMP 2023)

1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
active#(and(true,X)) mark#(X) (47)
active#(and(false,Y)) mark#(false) (48)
active#(if(true,X,Y)) mark#(X) (49)
active#(if(false,X,Y)) mark#(Y) (50)
active#(add(0,X)) mark#(X) (51)
active#(add(s(X),Y)) mark#(s(add(X,Y))) (52)
active#(add(s(X),Y)) s#(add(X,Y)) (53)
active#(add(s(X),Y)) add#(X,Y) (54)
active#(first(0,X)) mark#(nil) (55)
active#(first(s(X),cons(Y,Z))) mark#(cons(Y,first(X,Z))) (56)
active#(first(s(X),cons(Y,Z))) cons#(Y,first(X,Z)) (57)
active#(first(s(X),cons(Y,Z))) first#(X,Z) (58)
active#(from(X)) mark#(cons(X,from(s(X)))) (59)
active#(from(X)) cons#(X,from(s(X))) (60)
active#(from(X)) from#(s(X)) (61)
active#(from(X)) s#(X) (62)
mark#(and(X1,X2)) active#(and(mark(X1),X2)) (63)
mark#(and(X1,X2)) and#(mark(X1),X2) (64)
mark#(and(X1,X2)) mark#(X1) (65)
mark#(true) active#(true) (66)
mark#(false) active#(false) (67)
mark#(if(X1,X2,X3)) active#(if(mark(X1),X2,X3)) (68)
mark#(if(X1,X2,X3)) if#(mark(X1),X2,X3) (69)
mark#(if(X1,X2,X3)) mark#(X1) (70)
mark#(add(X1,X2)) active#(add(mark(X1),X2)) (71)
mark#(add(X1,X2)) add#(mark(X1),X2) (72)
mark#(add(X1,X2)) mark#(X1) (73)
mark#(0) active#(0) (74)
mark#(s(X)) active#(s(X)) (75)
mark#(first(X1,X2)) active#(first(mark(X1),mark(X2))) (76)
mark#(first(X1,X2)) first#(mark(X1),mark(X2)) (77)
mark#(first(X1,X2)) mark#(X1) (78)
mark#(first(X1,X2)) mark#(X2) (79)
mark#(nil) active#(nil) (80)
mark#(cons(X1,X2)) active#(cons(X1,X2)) (81)
mark#(from(X)) active#(from(X)) (82)
and#(mark(X1),X2) and#(X1,X2) (83)
and#(X1,mark(X2)) and#(X1,X2) (84)
and#(active(X1),X2) and#(X1,X2) (85)
and#(X1,active(X2)) and#(X1,X2) (86)
if#(mark(X1),X2,X3) if#(X1,X2,X3) (87)
if#(X1,mark(X2),X3) if#(X1,X2,X3) (88)
if#(X1,X2,mark(X3)) if#(X1,X2,X3) (89)
if#(active(X1),X2,X3) if#(X1,X2,X3) (90)
if#(X1,active(X2),X3) if#(X1,X2,X3) (91)
if#(X1,X2,active(X3)) if#(X1,X2,X3) (92)
add#(mark(X1),X2) add#(X1,X2) (93)
add#(X1,mark(X2)) add#(X1,X2) (94)
add#(active(X1),X2) add#(X1,X2) (95)
add#(X1,active(X2)) add#(X1,X2) (96)
s#(mark(X)) s#(X) (97)
s#(active(X)) s#(X) (98)
first#(mark(X1),X2) first#(X1,X2) (99)
first#(X1,mark(X2)) first#(X1,X2) (100)
first#(active(X1),X2) first#(X1,X2) (101)
first#(X1,active(X2)) first#(X1,X2) (102)
cons#(mark(X1),X2) cons#(X1,X2) (103)
cons#(X1,mark(X2)) cons#(X1,X2) (104)
cons#(active(X1),X2) cons#(X1,X2) (105)
cons#(X1,active(X2)) cons#(X1,X2) (106)
from#(mark(X)) from#(X) (107)
from#(active(X)) from#(X) (108)

1.1 Dependency Graph Processor

The dependency pairs are split into 8 components.