**Equational reasoning** is an important component in
symbolic algebra, automated deduction, high-level programming
languages, program verification, and artificial intelligence.
Reasoning with equations involves deriving consequences of given
equations and finding values for variables that satisfy a given
equation. **Rewriting** is a very powerful method for
dealing with equations.
Directed equations, called *rewrite rules*, are used to
replace equals by equals, but only in the indicated direction.
The theory of rewriting centers around the concept of *normal
form*, an expression that cannot be rewritten any further.
Computation consists of rewriting to a normal form; when the
normal form is unique, it is taken as the value of the initial
expression. When rewriting equal terms always leads to the same
normal form, the set of rules is said to be *convergent*
and rewriting can be used to check for equality.
Rewriting comes in various flavors, including:
- String rewriting
- Term rewriting
- Graph rewriting
- Ground rewriting
- Higher-order rewriting
- Conditional rewriting
- Priority rewriting
- Constrained rewriting
- Parallel rewriting
- Infinite rewriting

The field pretty cleanly splits in two directions:
- Programming Languages
- Confluence
- Termination
- Semantics
- Normalization strategies
- Combinatory logic
- Lambda calculi
- Functional and logic programming languages

- Automated Deduction
- Symbolic and algebraic computation
- Decision procedures
- Completion techniques
- Rewriting-based theorem proving
- Equation solving
- Unification and matching
- Constrained deduction
- Constraint solving
- Parallel deduction

Realized by
Nachum Dershowitz
and
Laurent Vigneron.