  The classical formulation of the program-synthesis problem is to find a
program that meets a correctness specification given as a logical formula.
Syntax-guided synthesis (SyGuS) is a standardized format for specifying the
correctness specification with a syntactic template that constrains the space
of allowed implementations.
  The input to SyGuS consists of a background theory, a semantic correctness
specification for the desired program given by a logical formula, and a
syntactic set of candidate implementations given by a grammar. The
computational problem then is to find an implementation from the set of
candidate expressions that satisfies the specification in the given theory. The
formulation of the problem builds on SMT-LIB.
  This document defines the SyGuS 2.1 standard, which is intended to be used as
the standard input and output language for solvers targeting the syntax-guided
synthesis problem. It borrows many concepts and language constructs from the
standard format for Satisfiability Modulo Theories (SMT) solvers, the SMT-LIB
2.6 standard.
