http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html