Towards Synthesis in Real Life
System synthesis refers to the task of automatically generating an executable component of a system (e.g., a software or hardware component) from a specification of the component's behavior. The traditional formalization of the problem assumes the specification is given by a logical formalism. Recent trends to synthesis relax the problem definition and consider a variety of inputs including logical requirements, incomplete programs, and examples behaviors. In this talk I will describe some of the challenges on the road to usable synthesis, a variety of current approaches for coping with them, and some success stories.