Logic in computer science: modelling and reasoning about systems | Synapse