Certification Problem

Input (TPDB TRS_Standard/Transformed_CSR_04/Ex5_Zan97_GM)

The rewrite relation of the following TRS is considered.

a__f(X) a__if(mark(X),c,f(true)) (1)
a__if(true,X,Y) mark(X) (2)
a__if(false,X,Y) mark(Y) (3)
mark(f(X)) a__f(mark(X)) (4)
mark(if(X1,X2,X3)) a__if(mark(X1),mark(X2),X3) (5)
mark(c) c (6)
mark(true) true (7)
mark(false) false (8)
a__f(X) f(X) (9)
a__if(X1,X2,X3) if(X1,X2,X3) (10)

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
[f(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[mark(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 1
· x1 +
1 0 0
0 0 0
0 1 0
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 0 0
0 0 0
0 1 0
· x1 +
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
[false] =
1 0 0
0 0 0
0 0 0
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
a__if(false,X,Y) mark(Y) (3)

1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 0 1
0 0 0
1 0 0
· x1 +
1 0 0
0 0 0
0 0 0
[mark(x1)] =
1 0 1
0 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
[a__if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 1
· x1 +
1 0 1
0 1 0
1 1 0
· x2 +
1 0 1
0 0 0
0 0 1
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 0 1
0 0 0
1 0 0
· x1 +
1 0 0
0 0 0
0 0 0
[if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 1
· x1 +
1 0 1
0 1 0
1 0 0
· x2 +
1 0 1
0 0 0
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[false] =
1 0 0
0 0 0
1 0 0
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
mark(false) false (8)

1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 1 0
1 1 1
0 0 0
· x1 +
1 0 0
0 0 0
1 0 0
[mark(x1)] =
1 1 0
1 1 0
0 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
1 0 0
[a__if(x1, x2, x3)] =
1 0 1
0 1 0
0 0 0
· x1 +
1 1 0
1 1 1
0 0 1
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 1 1
1 1 1
0 0 0
· x1 +
1 0 0
1 0 0
1 0 0
[if(x1, x2, x3)] =
1 0 1
0 1 0
0 0 0
· x1 +
1 1 0
1 1 1
0 0 1
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
a__if(true,X,Y) mark(X) (2)

1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 1 0
1 1 0
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[mark(x1)] =
1 1 0
1 1 0
0 1 0
· x1 +
0 0 0
0 0 0
1 0 0
[true] =
1 0 0
0 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 0 0
0 1 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 1
· x2 +
1 0 0
0 0 1
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 1 0
1 1 0
1 0 0
· x1 +
1 0 0
1 0 0
1 0 0
[if(x1, x2, x3)] =
1 0 0
0 1 0
0 0 0
· x1 +
1 0 0
0 1 0
0 0 0
· x2 +
1 0 0
0 0 1
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
a__f(X) f(X) (9)

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 1 1
1 1 0
1 1 0
· x1 +
0 0 0
1 0 0
1 0 0
[mark(x1)] =
1 0 1
0 1 0
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 1 0
0 0 0
0 0 1
· x1 +
1 1 0
0 0 0
0 0 1
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
1 0 0
1 0 0
[a__f(x1)] =
1 1 1
0 0 0
1 1 0
· x1 +
1 0 0
1 0 0
1 0 0
[if(x1, x2, x3)] =
1 1 0
0 0 0
0 0 1
· x1 +
1 1 0
0 0 0
0 0 1
· x2 +
1 0 0
0 0 0
0 0 0
· x3 +
0 0 0
1 0 0
1 0 0
[c] =
0 0 0
1 0 0
0 0 0
all of the following rules can be deleted.
mark(if(X1,X2,X3)) a__if(mark(X1),mark(X2),X3) (5)

1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 0 1
1 0 1
1 1 0
· x1 +
0 0 0
1 0 0
0 0 0
[mark(x1)] =
1 1 1
1 0 1
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[true] =
0 0 0
0 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 0 0
0 0 1
0 0 0
· x1 +
1 0 1
0 0 0
0 0 0
· x2 +
1 0 0
0 0 0
1 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 1 1
0 0 0
0 0 0
· x1 +
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
[c] =
0 0 0
1 0 0
0 0 0
all of the following rules can be deleted.
mark(c) c (6)

1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 1 0
1 1 0
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[mark(x1)] =
1 1 0
1 1 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[true] =
0 0 0
1 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 0 0
0 1 0
0 0 0
· x1 +
1 0 0
0 1 0
1 0 0
· x2 +
1 0 1
0 0 1
0 0 0
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 1 0
1 1 0
0 0 0
· x1 +
1 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
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
mark(true) true (7)

1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[f(x1)] =
1 1 1
0 0 1
0 0 0
· x1 +
0 0 0
1 0 0
1 0 0
[mark(x1)] =
1 1 1
0 0 0
0 0 1
· x1 +
1 0 0
0 0 0
0 0 0
[true] =
0 0 0
0 0 0
0 0 0
[a__if(x1, x2, x3)] =
1 0 0
0 0 0
0 0 0
· x1 +
1 0 0
0 1 1
0 0 0
· x2 +
1 0 0
0 0 0
0 0 1
· x3 +
0 0 0
0 0 0
0 0 0
[a__f(x1)] =
1 1 1
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
1 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 1
· x3 +
0 0 0
0 0 0
0 0 0
[c] =
0 0 0
0 0 0
0 0 0
all of the following rules can be deleted.
mark(f(X)) a__f(mark(X)) (4)

1.1.1.1.1.1.1.1.1 Rule Removal

Using the Knuth Bendix order with w0 = 1 and the following precedence and weight functions
prec(if) = 0 weight(if) = 1
prec(a__if) = 2 weight(a__if) = 1
prec(f) = 6 weight(f) = 0
prec(true) = 4 weight(true) = 1
prec(c) = 5 weight(c) = 1
prec(mark) = 1 weight(mark) = 4
prec(a__f) = 3 weight(a__f) = 7
all of the following rules can be deleted.
a__f(X) a__if(mark(X),c,f(true)) (1)
a__if(X1,X2,X3) if(X1,X2,X3) (10)

1.1.1.1.1.1.1.1.1.1 R is empty

There are no rules in the TRS. Hence, it is terminating.