Certification Problem

Input (TPDB SRS_Standard/Secret_05_SRS/aprove1)

The rewrite relation of the following TRS is considered.

p(0(x1)) → 0(s(s(p(x1)))) (1)
p(s(x1)) → x1 (2)
p(p(s(x1))) → p(x1) (3)
f(s(x1)) → g(s(x1)) (4)
g(x1) → i(s(half(x1))) (5)
i(x1) → f(p(x1)) (6)
half(0(x1)) → 0(s(s(half(x1)))) (7)
half(s(s(x1))) → s(half(p(p(s(s(x1)))))) (8)
0(x1) → x1 (9)
rd(0(x1)) → 0(0(0(0(0(0(rd(x1))))))) (10)

Property / Task

Prove or disprove termination.

Answer / Result

Yes.

Proof (by matchbox @ termCOMP 2023)

1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
0(p(x1)) → p(s(s(0(x1)))) (11)
s(p(x1)) → x1 (12)
s(p(p(x1))) → p(x1) (13)
s(f(x1)) → s(g(x1)) (14)
g(x1) → half(s(i(x1))) (15)
i(x1) → p(f(x1)) (16)
0(half(x1)) → half(s(s(0(x1)))) (17)
s(s(half(x1))) → s(s(p(p(half(s(x1)))))) (18)
0(x1) → x1 (9)
0(rd(x1)) → rd(0(0(0(0(0(0(x1))))))) (19)

1.1 Dependency Pair Transformation

The following set of initial dependency pairs has been identified.
0#(rd(x1)) → 0#(x1) (20)
0#(rd(x1)) → 0#(0(x1)) (21)
0#(rd(x1)) → 0#(0(0(x1))) (22)
0#(rd(x1)) → 0#(0(0(0(x1)))) (23)
0#(rd(x1)) → 0#(0(0(0(0(x1))))) (24)
0#(rd(x1)) → 0#(0(0(0(0(0(x1)))))) (25)
0#(p(x1)) → 0#(x1) (26)
0#(p(x1)) → s#(0(x1)) (27)
0#(p(x1)) → s#(s(0(x1))) (28)
0#(half(x1)) → 0#(x1) (29)
0#(half(x1)) → s#(0(x1)) (30)
0#(half(x1)) → s#(s(0(x1))) (31)
g#(x1) → i#(x1) (32)
g#(x1) → s#(i(x1)) (33)
s#(f(x1)) → g#(x1) (34)
s#(f(x1)) → s#(g(x1)) (35)
s#(s(half(x1))) → s#(x1) (36)
s#(s(half(x1))) → s#(s(p(p(half(s(x1)))))) (37)
s#(s(half(x1))) → s#(p(p(half(s(x1))))) (38)

1.1.1 Monotonic Reduction Pair Processor with Usable Rules

Using the matrix interpretations of dimension 1 with strict dimension 1 over the rationals with delta = 1
[rd(x1)] = x1 +
2
[0(x1)] = x1 +
0
[i(x1)] = x1 +
0
[g(x1)] = x1 +
0
[f(x1)] = x1 +
0
[s(x1)] = x1 +
0
[p(x1)] = x1 +
0
[half(x1)] = x1 +
0
[0#(x1)] = x1 +
2
[i#(x1)] = x1 +
0
[g#(x1)] = x1 +
1
[s#(x1)] = x1 +
1
together with the usable rules
0(p(x1)) → p(s(s(0(x1)))) (11)
s(p(x1)) → x1 (12)
s(p(p(x1))) → p(x1) (13)
s(f(x1)) → s(g(x1)) (14)
g(x1) → half(s(i(x1))) (15)
i(x1) → p(f(x1)) (16)
0(half(x1)) → half(s(s(0(x1)))) (17)
s(s(half(x1))) → s(s(p(p(half(s(x1)))))) (18)
0(x1) → x1 (9)
0(rd(x1)) → rd(0(0(0(0(0(0(x1))))))) (19)
(w.r.t. the implicit argument filter of the reduction pair), the pairs
0#(rd(x1)) → 0#(x1) (20)
0#(rd(x1)) → 0#(0(x1)) (21)
0#(rd(x1)) → 0#(0(0(x1))) (22)
0#(rd(x1)) → 0#(0(0(0(x1)))) (23)
0#(rd(x1)) → 0#(0(0(0(0(x1))))) (24)
0#(rd(x1)) → 0#(0(0(0(0(0(x1)))))) (25)
0#(p(x1)) → s#(0(x1)) (27)
0#(p(x1)) → s#(s(0(x1))) (28)
0#(half(x1)) → s#(0(x1)) (30)
0#(half(x1)) → s#(s(0(x1))) (31)
g#(x1) → i#(x1) (32)
and no rules could be deleted.

1.1.1.1 Dependency Graph Processor

The dependency pairs are split into 2 components.