  Automatic numerical algorithms attempt to provide approximate solutions that
differ from exact solutions by no more than a user-specified error tolerance.
The computational cost is often determined \emph{adaptively} by the algorithm
based on the function values sampled. While adaptive, automatic algorithms are
widely used in practice, most lack \emph{guarantees}, i.e., conditions on input
functions that ensure that the error tolerance is met.
  This article establishes a framework for guaranteed, adaptive, automatic
algorithms. Sufficient conditions for success and two-sided bounds on the
computational cost are provided in Theorems \ref{TwoStageDetermThm} and
\ref{MultiStageThm}. Lower bounds on the complexity of the problem are given in
Theorem \ref{complowbd}, and conditions under which the proposed algorithms
have optimal order are given in Corollary \ref{optimcor}. These general
theorems are illustrated for univariate numerical integration and function
recovery via adaptive algorithms based on linear splines.
  The key to these adaptive algorithms is performing the analysis for
\emph{cones} of input functions rather than balls. Cones provide a setting
where adaption may be beneficial.
