LISP and Symbolic Computation, 10(3)237-271

Trace-Based Abstract Interpretation of Operational Semantics

David A. Schmidt, Kansas State University, Computing and Information Sciences Department, 234 Nichols Hall, Manhattan, KS 66506 USA

Abstract: We present trace-based abstract interpretation, a unification of several lines of research on applying Cousot-Cousot-style abstract interpretation a.i. to operational semantics definitions (such as flowchart, big-step, and small-step semantics) that express a program?s semantics as a concrete computation tree of trace paths. A program?s trace-based a.i. is also a computation tree whose nodes contain abstractions of state and whose paths simulate the paths in the program's concrete computation tree. Using such computation trees, we provide a simple explanation of the central concept of collecting semantics, and we distinguish concrete from abstract collecting semantics and state-based from path-based collecting semantics. We also expose the relationship between collecting semantics extraction and results garnered from flow-analytic and model-checking-based analysis techniques. We adapt concepts from concurrency theory to formalize "safe" and "live" a.i.'s for computation trees; in particular, coinduction techniques help extend fundamental results to infinite computation trees.

Problems specific to the various operational semantics methodologies are discussed: Big-step semantics cannot express divergence, so we employ a mixture of induction and coinduction in response; small-step semantics generate sequences of program configurations unbounded in size, so we abstractly interpret source language syntax. Applications of trace-based a.i. to data-flow analysis, model checking, closure analysis, and concurrency theory are demonstrated.

Keywords: abstract interpretation, operational semantics, collecting semantics, simulation

This article can be downloaded [here].
[picture of journal cover]

June 2003 - hosc@brics.dk