  The problem of finding a constant bound on a term given a set of assumptions
has wide applications in optimization as well as program analysis. However, in
many contexts the objective term may be unbounded. Still, some sort of symbolic
bound may be useful. In this paper we introduce the optimal symbolic-bound
synthesis problem, and a technique that tackles this problem for non-linear
arithmetic with function symbols. This allows us to automatically produce
symbolic bounds on complex arithmetic expressions from a set of both equality
and inequality assumptions. Our solution employs a novel combination of
powerful mathematical objects -- Gr\"obner bases together with polyhedral cones
-- to represent an infinite set of implied inequalities. We obtain a sound
symbolic bound by reducing the objective term by this infinite set. We
implemented our method in a tool, AutoBound, which we tested on problems
originating from real Solidity programs. We find that AutoBound yields relevant
bounds in each case, matching or nearly-matching upper bounds produced by a
human analyst on the same set of programs.
