## 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.

Logo Inria