Certification Problem
Input (COPS 20)
We consider the TRS containing the following rules:
nats |
→ |
:(0,inc(nats)) |
(1) |
inc(:(x,y)) |
→ |
:(s(x),inc(y)) |
(2) |
hd(:(x,y)) |
→ |
x |
(3) |
tl(:(x,y)) |
→ |
y |
(4) |
inc(tl(nats)) |
→ |
tl(inc(nats)) |
(5) |
The underlying signature is as follows:
{nats/0, :/2, 0/0, inc/1, s/1, hd/1, tl/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:
inc(tl(nats)) |
→ |
tl(inc(nats)) |
(5) |
tl(:(x,y)) |
→ |
y |
(4) |
hd(:(x,y)) |
→ |
x |
(3) |
inc(:(x,y)) |
→ |
:(s(x),inc(y)) |
(2) |
nats |
→ |
:(0,inc(nats)) |
(1) |
tl(inc(nats)) |
→ |
inc(inc(nats)) |
(6) |
All redundant rules that were added or removed can be
simulated in 3 steps
.
1.1 Decreasing Diagrams
1.1.2 Rule Labeling
Confluence is proven, because all critical peaks can be joined decreasingly
using the following rule labeling function (rules that are not shown have label 0).
-
inc(tl(nats)) |
→ |
tl(inc(nats)) |
(5) |
↦ 1
-
↦ 0
-
↦ 0
-
inc(:(x,y)) |
→ |
:(s(x),inc(y)) |
(2) |
↦ 0
-
nats |
→ |
:(0,inc(nats)) |
(1) |
↦ 3
-
tl(inc(nats)) |
→ |
inc(inc(nats)) |
(6) |
↦ 2
The critical pairs can be joined as follows. Here,
↔ is always chosen as an appropriate rewrite relation which
is automatically inferred by the certifier.
-
The critical peak s = inc(tl(:(0,inc(nats))))←→ε tl(inc(nats)) = t can be joined as follows.
s
↔ inc(inc(nats)) ↔
t
-
The critical peak s = tl(inc(:(0,inc(nats))))←→ε inc(inc(nats)) = t can be joined as follows.
s
↔ tl(:(s(0),inc(inc(nats)))) ↔
t
/>