% Resolving Constrained Existential Queries over Context-Sensitive Analyses
% Author: James Ezick


A context-sensitive analysis is an analysis in which program elements are
interpreted with respect to the context in which they occur.  For analyses
on imperative languages, this often refers to considering the behavior of
called procedures with respect to the calling-stack contexts that precede
them.  Algorithms for performing or approximating these types of analyses
make up the core of interprocedural program analysis and are pervasive;
having applications in program optimization, checkpointing, and model
checking.  This paper presents an abstraction of a popular form of
context-sensitive analysis based on iteratively encapsulating the
cumulative effect of a recurring piece of code.  Given an analysis fitting
this abstraction, a technique is presented for resolving queries of the
form: {\it Is there an occurring context, subject to a given stack-context
constraint, in which a particular set of facts holds at a particular
location?}  This practical technique, based on manipulating regular
languages, is capable not only of answering queries of this form, but also
of generating a compact mechanism for dynamically applying the output of
the analysis to contexts as they occur.  A comprehensive example is
presented along with performance data on a case study code.  Finally, a
selection of potential applications is discussed.
