Certification Problem

Input (TPDB TRS_Standard/CiME_04/log2)

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)
ge(0(x),0(y)) ge(x,y) (19)
ge(0(x),1(y)) not(ge(y,x)) (20)
ge(1(x),0(y)) ge(x,y) (21)
ge(1(x),1(y)) ge(x,y) (22)
ge(x,#) true (23)
ge(#,0(x)) ge(#,x) (24)
ge(#,1(x)) false (25)
log(x) -(log'(x),1(#)) (26)
log'(#) # (27)
log'(1(x)) +(log'(x),1(#)) (28)
log'(0(x)) if(ge(x,1(#)),+(log'(x),1(#)),#) (29)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by ttt2 @ termCOMP 2023)

1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[-(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 0 1
0 1 0
· x2 +
0 0 0
0 0 0
0 0 0
[if(x1, x2, x3)] =
1 1 0
0 0 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
1 0 0
0 1 0
0 0 1
· x3 +
0 0 0
0 0 0
0 0 0
[0(x1)] =
1 1 1
1 0 0
1 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[1(x1)] =
1 1 1
1 0 0
1 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
0 0 0
[log(x1)] =
1 1 1
0 1 0
0 1 1
· x1 +
1 0 0
1 0 0
0 0 0
[#] =
0 0 0
0 0 0
0 0 0
[false] =
0 0 0
0 0 0
0 0 0
[log'(x1)] =
1 1 1
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
[ge(x1, x2)] =
1 0 0
1 0 0
0 0 0
· x1 +
1 0 0
1 0 0
0 0 0
· x2 +
0 0 0
0 0 0
1 0 0
[not(x1)] =
1 0 0
0 1 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[+(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
log'(#) # (27)

1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[-(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
1 0 1
1 1 0
· x2 +
0 0 0
0 0 0
0 0 0
[if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 1 0
0 1 0
0 0 1
· x2 +
1 0 0
0 1 0
0 0 1
· x3 +
0 0 0
0 0 0
0 0 0
[0(x1)] =
1 0 0
1 0 1
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[1(x1)] =
1 0 0
1 0 1
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
1 0 0
[log(x1)] =
1 1 1
1 1 0
1 0 1
· x1 +
1 0 0
0 0 0
1 0 0
[#] =
0 0 0
0 0 0
0 0 0
[false] =
0 0 0
0 0 0
1 0 0
[log'(x1)] =
1 1 1
1 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[ge(x1, x2)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
1 0 0
· x2 +
0 0 0
0 0 0
1 0 0
[not(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
1 0 0
[+(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
log(x) -(log'(x),1(#)) (26)

1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[-(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
[if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
1 0 0
0 1 0
0 0 1
· x3 +
0 0 0
0 0 0
0 0 0
[0(x1)] =
1 0 0
1 0 0
0 1 1
· x1 +
0 0 0
0 0 0
1 0 0
[1(x1)] =
1 0 0
1 0 0
0 1 1
· x1 +
0 0 0
0 0 0
1 0 0
[true] =
1 0 0
0 0 0
0 0 0
[#] =
0 0 0
0 0 0
0 0 0
[false] =
1 0 0
0 0 0
0 0 0
[log'(x1)] =
1 1 1
0 0 0
0 0 1
· x1 +
0 0 0
0 0 0
1 0 0
[ge(x1, x2)] =
1 0 0
0 0 0
1 0 1
· x1 +
1 0 0
1 0 0
1 0 0
· x2 +
1 0 0
0 0 0
0 0 0
[not(x1)] =
1 0 0
0 0 0
1 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[+(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
if(true,x,y) x (17)
if(false,x,y) y (18)
log'(1(x)) +(log'(x),1(#)) (28)

1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[-(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 1 0
· x2 +
0 0 0
0 0 0
0 0 0
[if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[0(x1)] =
1 1 0
1 1 0
1 0 1
· x1 +
0 0 0
0 0 0
1 0 0
[1(x1)] =
1 1 0
1 1 0
1 0 1
· x1 +
0 0 0
0 0 0
1 0 0
[true] =
0 0 0
0 0 0
0 0 0
[#] =
0 0 0
0 0 0
0 0 0
[false] =
0 0 0
0 0 0
0 0 0
[log'(x1)] =
1 1 1
0 0 1
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[ge(x1, x2)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 0
· x2 +
0 0 0
0 0 0
0 0 0
[not(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[+(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
log'(0(x)) if(ge(x,1(#)),+(log'(x),1(#)),#) (29)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[-(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 0 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
[0(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
1 0 0
[1(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
1 0 0
[true] =
0 0 0
0 0 0
0 0 0
[#] =
0 0 0
0 0 0
0 0 0
[false] =
0 0 0
0 0 0
0 0 0
[ge(x1, x2)] =
1 0 0
0 0 0
1 0 0
· x1 +
1 0 0
1 0 0
0 0 0
· x2 +
1 0 0
0 0 0
0 0 0
[not(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[+(x1, x2)] =
1 0 0
0 1 0
0 0 1
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
ge(x,#) true (23)
ge(#,1(x)) false (25)

1.1.1.1.1.1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
+#(0(x),0(y)) +#(x,y) (30)
+#(0(x),0(y)) 0#(+(x,y)) (31)
+#(0(x),1(y)) +#(x,y) (32)
+#(1(x),0(y)) +#(x,y) (33)
+#(1(x),1(y)) +#(x,y) (34)
+#(1(x),1(y)) +#(+(x,y),1(#)) (35)
+#(1(x),1(y)) 0#(+(+(x,y),1(#))) (36)
+#(+(x,y),z) +#(y,z) (37)
+#(+(x,y),z) +#(x,+(y,z)) (38)
-#(0(x),0(y)) -#(x,y) (39)
-#(0(x),0(y)) 0#(-(x,y)) (40)
-#(0(x),1(y)) -#(x,y) (41)
-#(0(x),1(y)) -#(-(x,y),1(#)) (42)
-#(1(x),0(y)) -#(x,y) (43)
-#(1(x),1(y)) -#(x,y) (44)
-#(1(x),1(y)) 0#(-(x,y)) (45)
ge#(0(x),0(y)) ge#(x,y) (46)
ge#(0(x),1(y)) ge#(y,x) (47)
ge#(0(x),1(y)) not#(ge(y,x)) (48)
ge#(1(x),0(y)) ge#(x,y) (49)
ge#(1(x),1(y)) ge#(x,y) (50)
ge#(#,0(x)) ge#(#,x) (51)

1.1.1.1.1.1.1 Dependency Graph Processor

The dependency pairs are split into 4 components.