YES Termination Proof

Termination Proof

by ttt2 (version ttt2 1.15)

Input

The rewrite relation of the following TRS is considered.

Begin(a(a(b(b(x0))))) → Wait(Right1(x0))
Begin(a(b(b(x0)))) → Wait(Right2(x0))
Begin(b(b(x0))) → Wait(Right3(x0))
Begin(b(x0)) → Wait(Right4(x0))
Right1(b(End(x0))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right2(b(a(End(x0)))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right3(b(a(a(End(x0))))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right4(b(a(a(b(End(x0)))))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right1(b(x0)) → Ab(Right1(x0))
Right2(b(x0)) → Ab(Right2(x0))
Right3(b(x0)) → Ab(Right3(x0))
Right4(b(x0)) → Ab(Right4(x0))
Right1(a(x0)) → Aa(Right1(x0))
Right2(a(x0)) → Aa(Right2(x0))
Right3(a(x0)) → Aa(Right3(x0))
Right4(a(x0)) → Aa(Right4(x0))
Ab(Left(x0)) → Left(b(x0))
Aa(Left(x0)) → Left(a(x0))
Wait(Left(x0)) → Begin(x0)
b(a(a(b(b(x0))))) → a(a(b(b(b(a(a(x0)))))))

Proof

1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
b(b(a(a(Begin(x0))))) → Right1(Wait(x0))
b(b(a(Begin(x0)))) → Right2(Wait(x0))
b(b(Begin(x0))) → Right3(Wait(x0))
b(Begin(x0)) → Right4(Wait(x0))
End(b(Right1(x0))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(a(b(Right2(x0)))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(b(a(a(b(Right4(x0)))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right1(x0)) → Right1(Ab(x0))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
b(Right4(x0)) → Right4(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))

1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[Wait(x1)] =
1 0 0
0 1 0
0 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[End(x1)] =
1 1 0
0 0 0
1 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[a(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Right1(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Right2(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Ab(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[b(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[Right4(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Aa(x1)] =
1 0 0
0 0 0
0 1 1
· x1 +
0 0 0
0 0 0
0 0 0
[Left(x1)] =
1 0 0
0 1 1
0 1 1
· x1 +
0 0 0
1 0 0
0 0 0
[Right3(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Begin(x1)] =
1 0 0
0 0 0
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
the rules
b(b(a(a(Begin(x0))))) → Right1(Wait(x0))
b(b(a(Begin(x0)))) → Right2(Wait(x0))
b(b(Begin(x0))) → Right3(Wait(x0))
b(Begin(x0)) → Right4(Wait(x0))
End(a(b(Right2(x0)))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right1(x0)) → Right1(Ab(x0))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
b(Right4(x0)) → Right4(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1 Rule Removal

Using the linear polynomial interpretation over the arctic semiring over the integers
[Wait(x1)] = 11 · x1 + -∞
[End(x1)] = 9 · x1 + -∞
[a(x1)] = 0 · x1 + -∞
[Right1(x1)] = 0 · x1 + -∞
[Right2(x1)] = 10 · x1 + -∞
[Ab(x1)] = 4 · x1 + -∞
[b(x1)] = 4 · x1 + -∞
[Right4(x1)] = 0 · x1 + -∞
[Aa(x1)] = 0 · x1 + -∞
[Left(x1)] = 2 · x1 + -∞
[Right3(x1)] = 10 · x1 + -∞
[Begin(x1)] = 13 · x1 + -∞
the rules
b(b(a(Begin(x0)))) → Right2(Wait(x0))
b(b(Begin(x0))) → Right3(Wait(x0))
End(a(b(Right2(x0)))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right1(x0)) → Right1(Ab(x0))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
b(Right4(x0)) → Right4(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
Begin(a(b(b(x0)))) → Wait(Right2(x0))
Begin(b(b(x0))) → Wait(Right3(x0))
Right2(b(a(End(x0)))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right3(b(a(a(End(x0))))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right1(b(x0)) → Ab(Right1(x0))
Right2(b(x0)) → Ab(Right2(x0))
Right3(b(x0)) → Ab(Right3(x0))
Right4(b(x0)) → Ab(Right4(x0))
Right1(a(x0)) → Aa(Right1(x0))
Right2(a(x0)) → Aa(Right2(x0))
Right3(a(x0)) → Aa(Right3(x0))
Right4(a(x0)) → Aa(Right4(x0))
Ab(Left(x0)) → Left(b(x0))
Aa(Left(x0)) → Left(a(x0))
Wait(Left(x0)) → Begin(x0)
b(a(a(b(b(x0))))) → a(a(b(b(b(a(a(x0)))))))

1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[Wait(x1)] = 1 · x1 + 2
[End(x1)] = 12 · x1 + 2
[a(x1)] = 1 · x1 + 0
[Right1(x1)] = 4 · x1 + 12
[Right2(x1)] = 1 · x1 + 10
[Ab(x1)] = 1 · x1 + 4
[b(x1)] = 1 · x1 + 4
[Right4(x1)] = 4 · x1 + 0
[Aa(x1)] = 1 · x1 + 0
[Left(x1)] = 1 · x1 + 2
[Right3(x1)] = 1 · x1 + 10
[Begin(x1)] = 1 · x1 + 4
the rules
Begin(a(b(b(x0)))) → Wait(Right2(x0))
Begin(b(b(x0))) → Wait(Right3(x0))
Right2(b(a(End(x0)))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right3(b(a(a(End(x0))))) → Left(a(a(b(b(b(a(a(End(x0)))))))))
Right2(b(x0)) → Ab(Right2(x0))
Right3(b(x0)) → Ab(Right3(x0))
Right1(a(x0)) → Aa(Right1(x0))
Right2(a(x0)) → Aa(Right2(x0))
Right3(a(x0)) → Aa(Right3(x0))
Right4(a(x0)) → Aa(Right4(x0))
Ab(Left(x0)) → Left(b(x0))
Aa(Left(x0)) → Left(a(x0))
Wait(Left(x0)) → Begin(x0)
b(a(a(b(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
b(b(a(Begin(x0)))) → Right2(Wait(x0))
b(b(Begin(x0))) → Right3(Wait(x0))
End(a(b(Right2(x0)))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))

1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[Wait(x1)] =
1 1 1
1 0 1
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[End(x1)] =
1 0 1
0 0 0
1 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[a(x1)] =
1 0 0
0 0 0
0 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[Right1(x1)] =
1 0 1
0 0 1
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Right2(x1)] =
1 0 0
0 0 1
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Ab(x1)] =
1 0 0
0 0 1
1 0 1
· x1 +
0 0 0
0 0 0
1 0 0
[b(x1)] =
1 0 0
1 1 0
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[Right4(x1)] =
1 1 1
0 0 0
0 0 0
· x1 +
1 0 0
0 0 0
0 0 0
[Aa(x1)] =
1 0 0
0 0 1
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Left(x1)] =
1 0 0
0 0 1
0 1 0
· x1 +
0 0 0
1 0 0
1 0 0
[Right3(x1)] =
1 0 0
0 0 1
0 0 0
· x1 +
0 0 0
0 0 0
0 0 0
[Begin(x1)] =
1 1 1
0 1 0
1 0 0
· x1 +
0 0 0
1 0 0
0 0 0
the rules
b(b(a(Begin(x0)))) → Right2(Wait(x0))
b(b(Begin(x0))) → Right3(Wait(x0))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the arctic semiring over the integers
[Wait(x1)] = 0 · x1 + -∞
[End(x1)] = 0 · x1 + -∞
[a(x1)] = 0 · x1 + -∞
[Right1(x1)] = 8 · x1 + -∞
[Right2(x1)] = 0 · x1 + -∞
[Ab(x1)] = 0 · x1 + -∞
[b(x1)] = 0 · x1 + -∞
[Right4(x1)] = 9 · x1 + -∞
[Aa(x1)] = 0 · x1 + -∞
[Left(x1)] = 1 · x1 + -∞
[Right3(x1)] = 1 · x1 + -∞
[Begin(x1)] = 1 · x1 + -∞
the rules
b(b(Begin(x0))) → Right3(Wait(x0))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right2(x0)) → Right2(Ab(x0))
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the naturals
[Wait(x1)] = 2 · x1 + 0
[End(x1)] = 1 · x1 + 2
[a(x1)] = 1 · x1 + 0
[Right1(x1)] = 8 · x1 + 0
[Right2(x1)] = 2 · x1 + 9
[Ab(x1)] = 2 · x1 + 0
[b(x1)] = 2 · x1 + 0
[Right4(x1)] = 1 · x1 + 1
[Aa(x1)] = 1 · x1 + 0
[Left(x1)] = 2 · x1 + 0
[Right3(x1)] = 8 · x1 + 0
[Begin(x1)] = 4 · x1 + 0
the rules
b(b(Begin(x0))) → Right3(Wait(x0))
End(a(a(b(Right3(x0))))) → End(a(a(b(b(b(a(a(Left(x0)))))))))
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over (3 x 3)-matrices with strict dimension 1 over the naturals
[Wait(x1)] =
1 0 1
0 0 1
0 0 0
· x1 +
0 0 0
1 0 0
0 0 0
[End(x1)] =
1 0 1
1 0 1
0 0 0
· x1 +
1 0 0
1 0 0
0 0 0
[a(x1)] =
1 0 0
0 0 0
0 0 1
· x1 +
0 0 0
0 0 0
0 0 0
[Right1(x1)] =
1 1 1
0 0 0
0 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[Right2(x1)] =
1 0 0
0 0 0
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[Ab(x1)] =
1 0 0
0 1 0
0 1 1
· x1 +
0 0 0
0 0 0
0 0 0
[b(x1)] =
1 0 0
0 1 0
0 1 1
· x1 +
0 0 0
0 0 0
0 0 0
[Right4(x1)] =
1 1 0
0 0 0
1 1 0
· x1 +
0 0 0
0 0 0
0 0 0
[Aa(x1)] =
1 0 0
0 0 0
0 1 1
· x1 +
0 0 0
0 0 0
0 0 0
[Left(x1)] =
1 0 0
0 1 0
0 1 1
· x1 +
1 0 0
0 0 0
0 0 0
[Right3(x1)] =
1 0 0
0 1 0
0 1 1
· x1 +
1 0 0
0 0 0
1 0 0
[Begin(x1)] =
1 0 1
0 0 1
0 0 0
· x1 +
1 0 0
1 0 0
0 0 0
the rules
b(b(Begin(x0))) → Right3(Wait(x0))
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
Left(Wait(x0)) → Begin(x0)
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1.1.1.1.1.1 Rule Removal

Using the linear polynomial interpretation over the arctic semiring over the integers
[Wait(x1)] = 13 · x1 + -∞
[a(x1)] = 0 · x1 + -∞
[Right1(x1)] = 8 · x1 + -∞
[Right2(x1)] = 8 · x1 + -∞
[Ab(x1)] = 8 · x1 + -∞
[b(x1)] = 8 · x1 + -∞
[Right4(x1)] = 2 · x1 + -∞
[Aa(x1)] = 0 · x1 + -∞
[Left(x1)] = 9 · x1 + -∞
[Right3(x1)] = 10 · x1 + -∞
[Begin(x1)] = 15 · x1 + -∞
the rules
b(Right3(x0)) → Right3(Ab(x0))
a(Right1(x0)) → Right1(Aa(x0))
a(Right2(x0)) → Right2(Aa(x0))
a(Right3(x0)) → Right3(Aa(x0))
a(Right4(x0)) → Right4(Aa(x0))
Left(Ab(x0)) → b(Left(x0))
Left(Aa(x0)) → a(Left(x0))
b(b(a(a(b(x0))))) → a(a(b(b(b(a(a(x0)))))))
remain.

1.1.1.1.1.1.1.1.1.1.1.1 String Reversal

Since only unary symbols occur, one can reverse all terms and obtains the TRS
Right3(b(x0)) → Ab(Right3(x0))
Right1(a(x0)) → Aa(Right1(x0))
Right2(a(x0)) → Aa(Right2(x0))
Right3(a(x0)) → Aa(Right3(x0))
Right4(a(x0)) → Aa(Right4(x0))
Ab(Left(x0)) → Left(b(x0))
Aa(Left(x0)) → Left(a(x0))
b(a(a(b(b(x0))))) → a(a(b(b(b(a(a(x0)))))))

1.1.1.1.1.1.1.1.1.1.1.1.1 Bounds

The given TRS is match-bounded by 1. This is shown by the following automaton.