Section: Scientific Foundations
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  as well as in program transformations like, for example, re-engineering of Cobol programs  . It is used in order to compute  , implicitly or explicitly as in Mathematica, MuPAD or OBJ  , but also to perform deduction when describing by inference rules a logic  , a theorem prover  or a constraint solver  . 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  , 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.