Differences between substitution and rewriting? I am continuing with my self-study of formal languages.

Given two alphabets $\Sigma$ and $\Delta$, a string substitution is a mapping from $\Sigma$ to $\mathcal P(\Delta^*)$, which induces a mapping from $\Sigma^*$ to $\mathcal P(\Delta^*)$. 

In case that a string substitution is a string homomorphism, it  is a mapping from $\Sigma$ to $\Delta^*$, which induces a mapping from $\Sigma^*$ to $ \Delta^*$. 

A rewriting system, however, seems to be a relation on $\Sigma^* \times \Delta^*$.

So I wonder if the main difference between rewriting and substitution is that rewriting is a relation, which might not be a mapping, while substitution is a mapping? Thanks.
There are three differences between substitutions and rewriting systems:


Substitutions happen one symbol at a time, while a rewrite rule can rewrite an entire substring at once.
Substitution is a single-valued function while in a rewriting system, several rewriting rules can apply to any given substring.
A substitution must specify what value is substituted for each symbol. Rewriting systems need not apply in all situations.


I would say that the first two are the major differences. You can define substitutions so that they are partial functions, and then the third difference doesn't apply.