Section: New Results
Semantics Design by Abstract Interpretation
The semantics of a programming language defines the semantics of its programs. The semantics of a program formally defines all its possible executions in all possible execution environments. The theory of abstract interpretation can be used to formally design an abstract semantics from a more concrete one (or inversely) which yields different styles of semantics such as operational, relational, denotational, axiomatic semantics, etc. Each such semantics describes program executions at different levels of abstraction. The latest results are related abstract semantics of the lambda-calculus [12] and of resolution-based programming languages [15] .
Bi-inductive Definitions and Bifinitary Semantics of the Eager Lambda-Calculus
Keywords : big-step semantics, bi-inductive definition, divergence, inductive definition, natural semantics, operational semantics, relational semantics, small-step semantics, structural semantics.
Participants : Patrick Cousot, Radhia Cousot.
We have introduced an order-theoretic generalization of
set-theoretic inductive definitions. This generalization covers
inductive, co-inductive, and bi-inductive definitions, including
non-monotonic ones, and is preserved by abstraction. This allows the
structural operational semantics to describe simultaneously the
finite/terminating and infinite/diverging behaviors of programs. This
is illustrated on the structural bifinitary semantics of the
call-by-value -calculus at various levels of abstraction
including small/big-step trace/relational/operational semantics
[12] .
Abstract Semantics of Resolution-Based Logic Languages
Keywords : abstract semantics, bottom-up semantics, Herbrand semantics, logic programming, s-semantics, parsing, top-down semantics.
Participants : Patrick Cousot, Radhia Cousot, Roberto Giacobazzi [ Universita' degli Studi di Verona ] .
The abstract interpretation point of view on context-free grammars [80] has been extended to resolution-based logic programs and proof systems in [15] . Starting from a transition-based small-step operational semantics of Prolog -like programs (akin to the Warren Machine), we consider maximal infinite derivations for the transition system from most general goals. This semantics is abstracted by instantiation to terms and furthermore to ground terms, following the so called c and s -semantics approach. Orthogonally, these sets of derivations can be abstracted to SLD-trees, call patterns and models, as well as interpreters providing effective implementations (such as Prolog or lazy Prolog ). These semantics can be presented in bottom-up fixpoint form. This abstract interpretation-based construction leads to classical bottom-up semantics (such as the s -semantics of computed answers of Giorgio Levi, the c -semantics of correct answers of Keith Clark, and the minimal-model semantics of logical consequences of Maarten van Emden and Robert Kowalski). The approach is general and can be applied to infinite and top-down semantics.