Formal Refinement Patterns for Goal-Driven Requirements Elaboration