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