Solution (source code)

= Solution

For $f\in L^\infty(\mathbb R^n)$ and $g\in L^1(\mathbb R^n)$, define their <convolution> by
$$
(f*g)(x)=\int_{\mathbb R^n}f(y)g(x-y)\,dy.
$$
It is bounded because
$$
|(f*g)(x)|\le\|f\|_\infty\|g\|_1.
$$
If $\tau_hg(z)=g(z+h)$, then
$$
|(f*g)(x+h)-(f*g)(x)|
\le\|f\|_\infty\|\tau_hg-g\|_1.
$$
Continuity of translation in $L^1$ makes the right-hand side tend to zero with $h$, uniformly in $x$. Thus the <convolution of L infinity and L1 functions> is bounded and continuous.

Now let $f=\mathbf1_A$ and $g(x)=\mathbf1_A(-x)$. Then
$$
(f*g)(z)=\int_{\mathbb R^n}\mathbf1_A(y)\mathbf1_A(y-z)\,dy.
$$
At zero this equals $|A|>0$. By continuity it remains positive throughout some open neighbourhood $U$ of zero. Positivity at $z$ means that some $y$ satisfies $y\in A$ and $y-z\in A$, so $z\in A-A$. Hence
$$
\boxed{U\subseteq A-A}.
$$
This is the <Steinhaus theorem>.

The conclusion also holds when $|A|=\infty$. Since $\mathbb R^n$ is the union of bounded balls, some measurable subset $A\cap B(0,R)$ has finite positive measure. Its difference set lies inside $A-A$ and already contains a neighbourhood of zero.