The Socrates Logic Synthesis and Optimization System