\documentclass{jfp1} 
\usepackage{stmaryrd}
\usepackage{amssymb}

% \usepackage[dvips]{graphicx,color}
\usepackage{hyperref}
\input{macros}
\title{Computational complexity of $k$CFA}
\begin{document} 
\author[D. Van Horn and H. G. Mairson]
{DAVID {VAN HORN}\\
Northeastern University, Boston, MA, USA\\
\and\ HARRY G. MAIRSON\\ 
Brandeis University, Waltham, MA, USA}

\maketitle 
\begin{abstract}
  We give exact characterizations of the computational complexity of
  the $k$CFA hierarchy and related analyses.
  % 
  In each case, we precisely capture both the {\em expressiveness} and
  {\em feasibility} of the analysis, identifying the elements
  responsible for the trade-off.

  0CFA is complete for polynomial time.
  % 
  This result relies on the insight that when a program is linear (each
  bound variable occurs exactly once), the analysis makes no
  approximation; abstract and concrete interpretation coincide, and
  therefore program analysis becomes evaluation under another guise.
  % 
  Moreover, this is true not only for 0CFA, but for a number of {\em
    further approximations} to 0CFA.  In each case, we derive polynomial
  time completeness results.
  
  For any $k > 0$, $k$CFA is complete for exponential time.  
  % 
  Even when $k = 1$, the distinction in binding contexts results in a
  limited form of {\em closures}, which do not occur in 0CFA.
  % 
  This theorem validates empirical observations that $k$CFA is
  intractably slow for any $k > 0$. 
  % 
  There is, in the worst case, %---and plausibly, in practice---
  no way to tame the cost of the analysis.
  % 
  Exponential time is required.  
  % 
  The empirically observed intractability of this analysis can be
  understood as being {\em inherent in the approximation problem being
    solved}, rather than reflecting unfortunate gaps in our programming
abilities.
\end{abstract}

\input{sec-introduction}
\input{sec-0cfa}
\input{sec-linear-logic}
\input{sec-kcfa}
\input{sec-related-work}
\input{sec-conclusions}


\bibliographystyle{jfp}
\bibliography{bibliography}


\end{document}