Certification Problem

Input (COPS 944)

We consider the TRS containing the following rules:

C(x) → c(x) (1)
c(c(x)) → x (2)
b(b(x)) → B(x) (3)
B(B(x)) → b(x) (4)
c(B(c(b(c(x))))) → B(c(b(c(B(c(b(x))))))) (5)
b(B(x)) → x (6)
B(b(x)) → x (7)
c(C(x)) → x (8)
C(c(x)) → x (9)

The underlying signature is as follows:

{C/1, c/1, b/1, B/1}

Property / Task

Prove or disprove confluence.

Answer / Result

Yes.

Proof (by csi @ CoCo 2020)

1 Locally confluent and terminating

Confluence is proven by showing local confluence and termination.

1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[c(x1)] = 2 · x1 + 1
[B(x1)] = 1 · x1 + 0
[C(x1)] = 2 · x1 + 1
[b(x1)] = 1 · x1 + 0
all of the following rules can be deleted.
c(c(x)) → x (2)
c(C(x)) → x (8)
C(c(x)) → x (9)

1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[c(x1)] = 1 · x1 + 0
[B(x1)] = 1 · x1 + 0
[C(x1)] = 2 · x1 + 4
[b(x1)] = 1 · x1 + 0
all of the following rules can be deleted.
C(x) → c(x) (1)

1.1.1.1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
b(b(x)) → B(x) (3)
B(B(x)) → b(x) (4)
c(b(c(B(c(x))))) → b(c(B(c(b(c(B(x))))))) (10)
B(b(x)) → x (7)
b(B(x)) → x (6)

1.1.1.1.1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
b#(b(x)) → B#(x) (11)
B#(B(x)) → b#(x) (12)
c#(b(c(B(c(x))))) → B#(x) (13)
c#(b(c(B(c(x))))) → c#(B(x)) (14)
c#(b(c(B(c(x))))) → b#(c(B(x))) (15)
c#(b(c(B(c(x))))) → c#(b(c(B(x)))) (16)
c#(b(c(B(c(x))))) → B#(c(b(c(B(x))))) (17)
c#(b(c(B(c(x))))) → c#(B(c(b(c(B(x)))))) (18)
c#(b(c(B(c(x))))) → b#(c(B(c(b(c(B(x))))))) (19)

1.1.1.1.1.1 Dependency Graph Processor

The dependency pairs are split into 2 components.

1.2 Local Confluence Proof

All critical pairs are joinable which can be seen by computing normal forms of all critical pairs.