This paper develops a new framework for program synthesis, called semantics-guided synthesis (SemGuS), that allows user to provide both the syntax and semantics constructs in language. SemGuS accepts recursively defined big-step semantics, which it, example, be used specify solve problems over an imperative programming language may contain loops with unbounded behavior. The customizable nature ...