Certification Problem

Input (TPDB TRS_Standard/CiME_04/big)

The rewrite relation of the following TRS is considered.

0(#) # (1)
+(x,#) x (2)
+(#,x) x (3)
+(0(x),0(y)) 0(+(x,y)) (4)
+(0(x),1(y)) 1(+(x,y)) (5)
+(1(x),0(y)) 1(+(x,y)) (6)
+(1(x),1(y)) 0(+(+(x,y),1(#))) (7)
+(+(x,y),z) +(x,+(y,z)) (8)
-(#,x) # (9)
-(x,#) x (10)
-(0(x),0(y)) 0(-(x,y)) (11)
-(0(x),1(y)) 1(-(-(x,y),1(#))) (12)
-(1(x),0(y)) 1(-(x,y)) (13)
-(1(x),1(y)) 0(-(x,y)) (14)
not(true) false (15)
not(false) true (16)
if(true,x,y) x (17)
if(false,x,y) y (18)
eq(#,#) true (19)
eq(#,1(y)) false (20)
eq(1(x),#) false (21)
eq(#,0(y)) eq(#,y) (22)
eq(0(x),#) eq(x,#) (23)
eq(1(x),1(y)) eq(x,y) (24)
eq(0(x),1(y)) false (25)
eq(1(x),0(y)) false (26)
eq(0(x),0(y)) eq(x,y) (27)
ge(0(x),0(y)) ge(x,y) (28)
ge(0(x),1(y)) not(ge(y,x)) (29)
ge(1(x),0(y)) ge(x,y) (30)
ge(1(x),1(y)) ge(x,y) (31)
ge(x,#) true (32)
ge(#,0(x)) ge(#,x) (33)
ge(#,1(x)) false (34)
log(x) -(log'(x),1(#)) (35)
log'(#) # (36)
log'(1(x)) +(log'(x),1(#)) (37)
log'(0(x)) if(ge(x,1(#)),+(log'(x),1(#)),#) (38)
*(#,x) # (39)
*(0(x),y) 0(*(x,y)) (40)
*(1(x),y) +(0(*(x,y)),y) (41)
*(*(x,y),z) *(x,*(y,z)) (42)
*(x,+(y,z)) +(*(x,y),*(x,z)) (43)
app(nil,l) l (44)
app(cons(x,l1),l2) cons(x,app(l1,l2)) (45)
sum(nil) 0(#) (46)
sum(cons(x,l)) +(x,sum(l)) (47)
sum(app(l1,l2)) +(sum(l1),sum(l2)) (48)
prod(nil) 1(#) (49)
prod(cons(x,l)) *(x,prod(l)) (50)
prod(app(l1,l2)) *(prod(l1),prod(l2)) (51)
mem(x,nil) false (52)
mem(x,cons(y,l)) if(eq(x,y),true,mem(x,l)) (53)
inter(x,nil) nil (54)
inter(nil,x) nil (55)
inter(app(l1,l2),l3) app(inter(l1,l3),inter(l2,l3)) (56)
inter(l1,app(l2,l3)) app(inter(l1,l2),inter(l1,l3)) (57)
inter(cons(x,l1),l2) ifinter(mem(x,l2),x,l1,l2) (58)
inter(l1,cons(x,l2)) ifinter(mem(x,l1),x,l2,l1) (59)
ifinter(true,x,l1,l2) cons(x,inter(l1,l2)) (60)
ifinter(false,x,l1,l2) inter(l1,l2) (61)

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.
*#(x,+(y,z)) *#(x,y) (62)
inter#(l1,app(l2,l3)) inter#(l1,l2) (63)
log'#(0(x)) +#(log'(x),1(#)) (64)
*#(0(x),y) *#(x,y) (65)
+#(+(x,y),z) +#(x,+(y,z)) (66)
eq#(0(x),#) eq#(x,#) (67)
inter#(l1,app(l2,l3)) app#(inter(l1,l2),inter(l1,l3)) (68)
-#(0(x),0(y)) -#(x,y) (69)
prod#(app(l1,l2)) prod#(l1) (70)
app#(cons(x,l1),l2) app#(l1,l2) (71)
inter#(app(l1,l2),l3) inter#(l2,l3) (72)
prod#(cons(x,l)) prod#(l) (73)
-#(0(x),1(y)) -#(-(x,y),1(#)) (74)
+#(1(x),1(y)) +#(+(x,y),1(#)) (75)
+#(0(x),1(y)) +#(x,y) (76)
prod#(app(l1,l2)) prod#(l2) (77)
log#(x) -#(log'(x),1(#)) (78)
+#(1(x),1(y)) +#(x,y) (79)
-#(1(x),1(y)) -#(x,y) (80)
+#(+(x,y),z) +#(y,z) (81)
-#(0(x),0(y)) 0#(-(x,y)) (82)
inter#(app(l1,l2),l3) app#(inter(l1,l3),inter(l2,l3)) (83)
*#(1(x),y) *#(x,y) (84)
*#(*(x,y),z) *#(x,*(y,z)) (85)
*#(1(x),y) +#(0(*(x,y)),y) (86)
+#(1(x),1(y)) 0#(+(+(x,y),1(#))) (87)
inter#(cons(x,l1),l2) ifinter#(mem(x,l2),x,l1,l2) (88)
prod#(cons(x,l)) *#(x,prod(l)) (89)
sum#(app(l1,l2)) sum#(l2) (90)
eq#(1(x),1(y)) eq#(x,y) (91)
+#(0(x),0(y)) +#(x,y) (92)
*#(1(x),y) 0#(*(x,y)) (93)
+#(1(x),0(y)) +#(x,y) (94)
ge#(1(x),0(y)) ge#(x,y) (95)
log'#(1(x)) +#(log'(x),1(#)) (96)
ge#(0(x),0(y)) ge#(x,y) (97)
log'#(0(x)) log'#(x) (98)
inter#(app(l1,l2),l3) inter#(l1,l3) (99)
-#(0(x),1(y)) -#(x,y) (100)
inter#(cons(x,l1),l2) mem#(x,l2) (101)
mem#(x,cons(y,l)) mem#(x,l) (102)
log#(x) log'#(x) (103)
-#(1(x),0(y)) -#(x,y) (104)
*#(*(x,y),z) *#(y,z) (105)
eq#(0(x),0(y)) eq#(x,y) (106)
inter#(l1,cons(x,l2)) mem#(x,l1) (107)
ge#(0(x),1(y)) ge#(y,x) (108)
inter#(l1,app(l2,l3)) inter#(l1,l3) (109)
ifinter#(true,x,l1,l2) inter#(l1,l2) (110)
log'#(0(x)) ge#(x,1(#)) (111)
sum#(app(l1,l2)) sum#(l1) (112)
*#(0(x),y) 0#(*(x,y)) (113)
log'#(0(x)) if#(ge(x,1(#)),+(log'(x),1(#)),#) (114)
ge#(#,0(x)) ge#(#,x) (115)
sum#(cons(x,l)) sum#(l) (116)
inter#(l1,cons(x,l2)) ifinter#(mem(x,l1),x,l2,l1) (117)
mem#(x,cons(y,l)) eq#(x,y) (118)
eq#(#,0(y)) eq#(#,y) (119)
ifinter#(false,x,l1,l2) inter#(l1,l2) (120)
+#(0(x),0(y)) 0#(+(x,y)) (121)
prod#(app(l1,l2)) *#(prod(l1),prod(l2)) (122)
sum#(app(l1,l2)) +#(sum(l1),sum(l2)) (123)
sum#(cons(x,l)) +#(x,sum(l)) (124)
*#(x,+(y,z)) *#(x,z) (125)
*#(x,+(y,z)) +#(*(x,y),*(x,z)) (126)
-#(1(x),1(y)) 0#(-(x,y)) (127)
sum#(nil) 0#(#) (128)
log'#(1(x)) log'#(x) (129)
ge#(0(x),1(y)) not#(ge(y,x)) (130)
ge#(1(x),1(y)) ge#(x,y) (131)
mem#(x,cons(y,l)) if#(eq(x,y),true,mem(x,l)) (132)

1.1 Dependency Graph Processor

The dependency pairs are split into 14 components.