Synthesis in complex problem domains