  The performance of a syntax-guided synthesis algorithm is highly dependent on
the provision of a good syntactic template, or grammar. Provision of such a
template is often left to the user to do manually, though in the absence of
such a grammar, state-of-the-art solvers will provide their own default
grammar, which is dependent on the signature of the target program to be
sythesized. In this work, we speculate this default grammar could be improved
upon substantially. We build sets of rules, or metagrammars, for constructing
grammars, and perform a gradient descent over these metagrammars aiming to find
a metagrammar which solves more benchmarks and on average faster. We show the
resulting metagrammar enables CVC4 to solve 26% more benchmarks than the
default grammar within a 300s time-out, and that metagrammars learnt from tens
of benchmarks generalize to performance on 100s of benchmarks.
