  The traditional abstract domain framework for imperative programs suffers
from several shortcomings; in particular it does not allow precise symbolic
abstractions. To solve these problems, we propose a new abstract interpretation
framework, based on symbolic expressions used both as an abstraction of the
program, and as the input analyzed by abstract domains. We demonstrate new
applications of the frame- work: an abstract domain that efficiently propagates
constraints across the whole program; a new formalization of functor domains as
approximate translation, which allows the production of approximate programs,
on which we can perform classical symbolic techniques. We used these to build a
complete analyzer for embedded C programs, that demonstrates the practical
applicability of the framework.
