Logic in computer science: Modelling and reasoning about systems - Huth, Michael (2005)