Formal Engineering Design Synthesis: Engineering Shape Grammars