Fundamentals of computation theory (Berlin Springer-Verlag, 2005)