12.2 The Art of Synthesizing Logic