YES
Termination Proof
Termination Proof
by ttt2 (version ttt2 1.15)
Input
The rewrite relation of the following TRS is considered.
| 
p(0(x0)) | 
→ | 
0(s(s(p(x0)))) | 
| 
p(s(x0)) | 
→ | 
x0 | 
| 
p(p(s(x0))) | 
→ | 
p(x0) | 
| 
f(s(x0)) | 
→ | 
g(s(x0)) | 
| 
g(x0) | 
→ | 
i(s(half(x0))) | 
| 
i(x0) | 
→ | 
f(p(x0)) | 
| 
half(0(x0)) | 
→ | 
0(s(s(half(x0)))) | 
| 
half(s(s(x0))) | 
→ | 
s(half(p(p(s(s(x0)))))) | 
| 
0(x0) | 
→ | 
x0 | 
| 
rd(0(x0)) | 
→ | 
0(0(0(0(0(0(rd(x0))))))) | 
Proof
1 Rule Removal
      Using the
      linear polynomial interpretation over the naturals
| [g(x1)] | 
 =  | 
8 · 
                    x1 + 0 | 
| [p(x1)] | 
 =  | 
1 · 
                    x1 + 0 | 
| [f(x1)] | 
 =  | 
8 · 
                    x1 + 0 | 
| [half(x1)] | 
 =  | 
1 · 
                    x1 + 0 | 
| [0(x1)] | 
 =  | 
1 · 
                    x1 + 1 | 
| [rd(x1)] | 
 =  | 
8 · 
                    x1 + 0 | 
| [i(x1)] | 
 =  | 
8 · 
                    x1 + 0 | 
| [s(x1)] | 
 =  | 
1 · 
                    x1 + 0 | 
          the
          rules
| 
p(0(x0)) | 
→ | 
0(s(s(p(x0)))) | 
| 
p(s(x0)) | 
→ | 
x0 | 
| 
p(p(s(x0))) | 
→ | 
p(x0) | 
| 
f(s(x0)) | 
→ | 
g(s(x0)) | 
| 
g(x0) | 
→ | 
i(s(half(x0))) | 
| 
i(x0) | 
→ | 
f(p(x0)) | 
| 
half(0(x0)) | 
→ | 
0(s(s(half(x0)))) | 
| 
half(s(s(x0))) | 
→ | 
s(half(p(p(s(s(x0)))))) | 
          remain.
        1.1 String Reversal
        Since only unary symbols occur, one can reverse all terms and obtains the TRS        
        
| 
0(p(x0)) | 
→ | 
p(s(s(0(x0)))) | 
| 
s(p(x0)) | 
→ | 
x0 | 
| 
s(p(p(x0))) | 
→ | 
p(x0) | 
| 
s(f(x0)) | 
→ | 
s(g(x0)) | 
| 
g(x0) | 
→ | 
half(s(i(x0))) | 
| 
i(x0) | 
→ | 
p(f(x0)) | 
| 
0(half(x0)) | 
→ | 
half(s(s(0(x0)))) | 
| 
s(s(half(x0))) | 
→ | 
s(s(p(p(half(s(x0)))))) | 
1.1.1 Dependency Pair Transformation
          The following set of initial dependency pairs has been identified.
          
| 
0#(p(x0)) | 
→ | 
0#(x0) | 
| 
0#(p(x0)) | 
→ | 
s#(0(x0)) | 
| 
0#(p(x0)) | 
→ | 
s#(s(0(x0))) | 
| 
s#(f(x0)) | 
→ | 
g#(x0) | 
| 
s#(f(x0)) | 
→ | 
s#(g(x0)) | 
| 
g#(x0) | 
→ | 
i#(x0) | 
| 
g#(x0) | 
→ | 
s#(i(x0)) | 
| 
0#(half(x0)) | 
→ | 
0#(x0) | 
| 
0#(half(x0)) | 
→ | 
s#(0(x0)) | 
| 
0#(half(x0)) | 
→ | 
s#(s(0(x0))) | 
| 
s#(s(half(x0))) | 
→ | 
s#(x0) | 
| 
s#(s(half(x0))) | 
→ | 
s#(p(p(half(s(x0))))) | 
| 
s#(s(half(x0))) | 
→ | 
s#(s(p(p(half(s(x0)))))) | 
1.1.1.1 Dependency Graph Processor
The dependency pairs are split into 0
        components.