Formal Reasoning Techniques for Goal Models