The convolution of two signals $f$ and $g$ is defined as:
$$\begin{array}{}\text{(1)}& \begin{array}{rl}\ast :\text{}& (\mathbb{Z}\to \mathbb{R})\times (\mathbb{Z}\to \mathbb{R})\to (\mathbb{Z}\to \mathbb{R}):\\ & f[n],g[n]\mapsto (f\ast g)[n]\triangleq \sum _{k=-\mathrm{\infty}}^{+\mathrm{\infty}}f[k]\text{}g[n-k]\end{array}\end{array}$$
If no ambiguity exists, a shorthand can be used:
$$f\ast g\triangleq \sum _{k=-\mathrm{\infty}}^{+\mathrm{\infty}}f[k]\text{}g[n-k]$$

The convolution operator can be seen as a product of discrete functions,
and it has many properties usually associated with multiplication.

Commutativity: $\phantom{\rule{1em}{0ex}}}f\ast g=g\ast f$

Associativity: $\phantom{\rule{1em}{0ex}}}(f\ast g)\ast h=f\ast (g\ast h)$

Distributivity: $\phantom{\rule{1em}{0ex}}}(f+g)\ast h=f\ast h+g\ast h$

Convolution with the Kronecker delta function results in the original signal,
thanks to the sifting property of the delta function:
$$f\ast \delta =f=\delta \ast f$$

If the first signal is unilateral (i.e. $\mathrm{\forall}n<0:f[n]=0$), the
lower bound of the summation becomes zero instead of minus infinity:
$$f\ast g=\sum _{k=0}^{+\mathrm{\infty}}f[k]\text{}g[n-k]$$

Any discrete signal can be written as an infinite sum of scaled
and shifted Kronecker delta functions.
$$x[n]=\sum _{k=-\mathrm{\infty}}^{+\mathrm{\infty}}x[k]\text{}\delta [n-k]$$
You can easily see that all terms where $n\ne k$ are zero, because the
Kronecker delta is zero in that case.
Only the term for $n=k$ is non-zero, in which case the Kronecker delta
is one, so the result is just $x[k]$.
This is an application the sifting property of the delta function,
covered in the previous page.

This once again shows that the Kronecker delta is the identity signal with
respect to convolution operator, $x[n]=(x\ast \delta )[n]$.

You can express the output of any discrete-time linear time-invariant system
$T$ with any input $x[n]$ as the convolution of the input with the
impulse response of the system, $h[n]\triangleq T(\delta [n])$:
$$\begin{array}{}\text{(2)}& T(x[n])=(x\ast h)[n]\end{array}$$

The proof itself is very simple: We just decompose the input as a sum of
delta functions, as described in a previous section, and then we use the
linearity and time-invariance to bring the $T$ operator inside of the
summation.
$$\begin{array}{rl}y[n]& =T(x[n])\\ & =T(\sum _{k=0}^{\mathrm{\infty}}x[k]\text{}\delta [n-k])\\ & =\sum _{k=0}^{\mathrm{\infty}}T(x[k]\text{}\delta [n-k])\\ & =\sum _{k=0}^{\mathrm{\infty}}x[k]\text{}T(\delta [n-k])\\ & =\sum _{k=0}^{\mathrm{\infty}}x[k]\text{}h[n-k]\\ & \triangleq (x\ast h)[n]\end{array}$$
Because of the linearity of the system, $T$ can be brought inside of the
summation, and since $x[k]$ is a constant factor independent of the time
step $n$, it can be moved outside of the $T$ operator.
$T$ applied to the Kronecker delta is (by definition) the impulse response
of $T$, $h[n]$. In this case, it is shifted by $k$ time steps, which
is allowed because of the time-invariance of $T$.
$\u25fb$

An important consequence is that every DTLTI transformation can be uniquely
represented by its impulse response, in other words, there is a one-to-one
correspondence between the definition of transformation $T$ and its
impulse response $h[n]$.