In programming, termination of a program/algorithm means that its evaluation will eventually terminate, regardless of the input it receives. It is an important property and is required for total correctness. In general the problem is undecid- able. Term rewriting is a formal way of specifying computation and as such it can be seen as a generic model for programming languages. Termination, here meaning lack of infinite sequences, is a well-studied concept in this context. There exist a number of methods for proving termination as well as a number of tools for doing that automatically. There is an on-going work on application of this methodology and tools to proving termination of programs in actual programming languages. In this thesis we fi...