## Section: Scientific Foundations

### Introduction

It is a common claim that rewriting is ubiquitous in computer science and
mathematical logic. And indeed the rewriting concept appears from very
theoretical settings to very practical implementations. Some extreme
examples are the mail system under Unix that uses rules in order to rewrite mail
addresses in canonical forms (see the `/etc/sendmail.cf` file in the
configuration of the mail system) and the transition rules describing the
behaviors of tree automata.
Rewriting is used in semantics in order to
describe the meaning of programming languages [56] as well as in
program transformations like, for example, re-engineering of Cobol
programs [71] . It is used in order to
compute [44] , implicitly or explicitly as in Mathematica,
MuPAD or OBJ [47] , but also to perform deduction when describing by inference rules a
logic [46] , a theorem
prover [54] or a constraint
solver [55] . It is of course central in systems making
the notion of rule an explicit and first class object, like expert systems,
programming languages based on equational logic [66] , algebraic
specifications (*e.g.* , OBJ), functional programming (*e.g.* , ML)
and transition systems (*e.g.* , Murphi).

In this context, the study of the theoretical foundations of rewriting have to be continued and effective rewrite based tools should be developed. The extensions of first-order rewriting with higher-order and higher-dimension features are hot topics and these research directions naturally encompass the study of the rewriting calculus, of polygraphs and of their interaction. The usefulness of these concepts becomes more clear when they are implemented and a considerable effort is thus put nowadays in the development of expressive and efficient rewrite based programming languages.