Certification Problem
Input (COPS 962)
We consider the TRS containing the following rules:
a(b(x)) |
→ |
C(x) |
(1) |
b(c(x)) |
→ |
A(x) |
(2) |
c(a(x)) |
→ |
B(x) |
(3) |
A(C(x)) |
→ |
b(x) |
(4) |
C(B(x)) |
→ |
a(x) |
(5) |
B(A(x)) |
→ |
c(x) |
(6) |
a(a(a(a(x)))) |
→ |
A(A(A(x))) |
(7) |
A(A(A(A(x)))) |
→ |
a(a(a(x))) |
(8) |
b(b(b(b(x)))) |
→ |
B(B(B(x))) |
(9) |
B(B(B(B(x)))) |
→ |
b(b(b(x))) |
(10) |
c(c(c(c(x)))) |
→ |
C(C(C(x))) |
(11) |
C(C(C(C(x)))) |
→ |
c(c(c(x))) |
(12) |
B(a(a(a(x)))) |
→ |
c(A(A(A(x)))) |
(13) |
A(A(A(b(x)))) |
→ |
a(a(a(C(x)))) |
(14) |
C(b(b(b(x)))) |
→ |
a(B(B(B(x)))) |
(15) |
B(B(B(c(x)))) |
→ |
b(b(b(A(x)))) |
(16) |
A(c(c(c(x)))) |
→ |
b(C(C(C(x)))) |
(17) |
C(C(C(a(x)))) |
→ |
c(c(c(B(x)))) |
(18) |
a(A(x)) |
→ |
x |
(19) |
A(a(x)) |
→ |
x |
(20) |
b(B(x)) |
→ |
x |
(21) |
B(b(x)) |
→ |
x |
(22) |
c(C(x)) |
→ |
x |
(23) |
C(c(x)) |
→ |
x |
(24) |
The underlying signature is as follows:
{a/1, b/1, C/1, c/1, A/1, B/1}Property / Task
Prove or disprove confluence.Answer / Result
Yes.Proof (by csi @ CoCo 2021)
1 Redundant Rules Transformation
To prove that the TRS is (non-)confluent, we show (non-)confluence of the following
modified system:
C(c(x)) |
→ |
x |
(24) |
c(C(x)) |
→ |
x |
(23) |
B(b(x)) |
→ |
x |
(22) |
b(B(x)) |
→ |
x |
(21) |
A(a(x)) |
→ |
x |
(20) |
a(A(x)) |
→ |
x |
(19) |
C(C(C(a(x)))) |
→ |
c(c(c(B(x)))) |
(18) |
A(c(c(c(x)))) |
→ |
b(C(C(C(x)))) |
(17) |
B(B(B(c(x)))) |
→ |
b(b(b(A(x)))) |
(16) |
C(b(b(b(x)))) |
→ |
a(B(B(B(x)))) |
(15) |
A(A(A(b(x)))) |
→ |
a(a(a(C(x)))) |
(14) |
B(a(a(a(x)))) |
→ |
c(A(A(A(x)))) |
(13) |
C(C(C(C(x)))) |
→ |
c(c(c(x))) |
(12) |
c(c(c(c(x)))) |
→ |
C(C(C(x))) |
(11) |
B(B(B(B(x)))) |
→ |
b(b(b(x))) |
(10) |
b(b(b(b(x)))) |
→ |
B(B(B(x))) |
(9) |
A(A(A(A(x)))) |
→ |
a(a(a(x))) |
(8) |
a(a(a(a(x)))) |
→ |
A(A(A(x))) |
(7) |
B(A(x)) |
→ |
c(x) |
(6) |
C(B(x)) |
→ |
a(x) |
(5) |
A(C(x)) |
→ |
b(x) |
(4) |
c(a(x)) |
→ |
B(x) |
(3) |
b(c(x)) |
→ |
A(x) |
(2) |
a(b(x)) |
→ |
C(x) |
(1) |
All redundant rules that were added or removed can be
simulated in 2 steps
.
1.1 Locally confluent and terminating
Confluence is proven by showing local confluence and termination.
1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[A(x1)] |
= |
1 · x1 + 2 |
[a(x1)] |
= |
1 · x1 + 2 |
[c(x1)] |
= |
1 · x1 + 2 |
[B(x1)] |
= |
1 · x1 + 2 |
[b(x1)] |
= |
1 · x1 + 2 |
[C(x1)] |
= |
1 · x1 + 2 |
all of the following rules can be deleted.
C(c(x)) |
→ |
x |
(24) |
c(C(x)) |
→ |
x |
(23) |
B(b(x)) |
→ |
x |
(22) |
b(B(x)) |
→ |
x |
(21) |
A(a(x)) |
→ |
x |
(20) |
a(A(x)) |
→ |
x |
(19) |
C(C(C(C(x)))) |
→ |
c(c(c(x))) |
(12) |
c(c(c(c(x)))) |
→ |
C(C(C(x))) |
(11) |
B(B(B(B(x)))) |
→ |
b(b(b(x))) |
(10) |
b(b(b(b(x)))) |
→ |
B(B(B(x))) |
(9) |
A(A(A(A(x)))) |
→ |
a(a(a(x))) |
(8) |
a(a(a(a(x)))) |
→ |
A(A(A(x))) |
(7) |
B(A(x)) |
→ |
c(x) |
(6) |
C(B(x)) |
→ |
a(x) |
(5) |
A(C(x)) |
→ |
b(x) |
(4) |
c(a(x)) |
→ |
B(x) |
(3) |
b(c(x)) |
→ |
A(x) |
(2) |
a(b(x)) |
→ |
C(x) |
(1) |
1.1.1.1 Rule Removal
Using the
linear polynomial interpretation over the naturals
[A(x1)] |
= |
2 · x1 + 0 |
[a(x1)] |
= |
2 · x1 + 2 |
[c(x1)] |
= |
2 · x1 + 2 |
[B(x1)] |
= |
2 · x1 + 0 |
[b(x1)] |
= |
2 · x1 + 2 |
[C(x1)] |
= |
2 · x1 + 0 |
all of the following rules can be deleted.
C(C(C(a(x)))) |
→ |
c(c(c(B(x)))) |
(18) |
A(c(c(c(x)))) |
→ |
b(C(C(C(x)))) |
(17) |
B(B(B(c(x)))) |
→ |
b(b(b(A(x)))) |
(16) |
C(b(b(b(x)))) |
→ |
a(B(B(B(x)))) |
(15) |
A(A(A(b(x)))) |
→ |
a(a(a(C(x)))) |
(14) |
B(a(a(a(x)))) |
→ |
c(A(A(A(x)))) |
(13) |
1.1.1.1.1 R is empty
There are no rules in the TRS. Hence, it is terminating.
1.1.2 Local Confluence Proof
All critical pairs are joinable which can be seen by computing normal forms of all critical pairs.