Affiliation:
1. Johns Hopkins University, Baltimore, USA
Abstract
This paper develops a novel minimal-state operational semantics for higher-order functional languages that uses
only
the call stack and a source program point or a lexical level as the
complete
state information: there is no environment, no substitution, no continuation, etc. We prove this form of operational semantics equivalent to standard presentations.
We then show how this approach can open the door to potential new applications: we define a program analysis as a direct finitization of this operational semantics. The program analysis that naturally emerges has a number of novel and interesting properties compared to standard program analyses for higher-order programs: for example, it can infer recurrences and does not need value widening. We both give a formal definition of the analysis and describe our current implementation.
Publisher
Association for Computing Machinery (ACM)
Reference34 articles.
1. H. Barendregt. 1984. The Lambda Calculus: Its Syntax and Semantics (2nd ed.).
2. Skeletal semantics and their interpretations
3. Patrick Cousot and Radhia Cousot. 1977. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL ’77). ACM, New York, NY, USA. 238–252. https://doi.org/10.1145/512950.512973 10.1145/512950.512973
4. Abstracting definitional interpreters (functional pearl)
5. Higher-order Demand-driven Program Analysis