## Section: Research Program

### Applications of the notion of abstraction in semantics

In the previous subsections, we sketched the steps in the design of a static analyzer to infer some family of properties, which should be implementable, and efficient enough to succeed in verifying non trivial systems.

The same principles can be applied successfully to other goals.
In particular, the abstract interpretation framework should be viewed as a
very general tool to *compare different semantics*, not necessarily
with the goal of deriving a static analyzer.
Such comparisons may be used in order to prove two semantics equivalent
(i.e., one is an abstraction of the other and vice versa), or that a first
semantics is strictly more expressive than another one (i.e., the latter
can be viewed an abstraction of the former, where the abstraction actually
makes some information redundant, which cannot be recovered).
A classical example of such comparison is the classification of semantics
of transition systems [21], which provides a better
understanding of program semantics in general.
For instance, this approach can be applied to get a better understanding
of the semantics of a programming language, but also to select which
concrete semantics should be used as a foundation for a static analysis,
or to prove the correctness of a program transformation, compilation or
optimization.