I’ve been trying to understand how the Alabern-Mateu-Verdera characterization of Sobolev spaces works. Consider a function . Let
be the average of
on scale
; that is,
. The difference
measures the deviation of
from a line. AMV define the square function
as a weighted average of the squares of such deviations:
Since I’m mostly interested in the local matters, I’ll use the truncated square function which avoids the large-scale considerations. If
is very nice (say, twice continuously differentiable), then
is of order
, and the integral converges with room to spare. For example, here is the Gaussian (
is in blue,
in red):

This looks suspicious. Clearly, measures the size of the second derivative, not of the first. Yet, one of the Alabern-Mateu-Verdera theorems is for the Sobolev space of first order
: namely,
(for finite
). So, the degree of integrability of
matches that of
, even though the functions look very different.
For functions that are not very nice may be infinite for some values of
. For example, if the graph of
has a corner at some point, then
is of order
there, and the integral defining
diverges as
. For example, take the triangle
:

The triangle is a Lipschitz, i.e., , but its
is not bounded. So, the AMV characterization
does not extend to
. However, the blow-up rate of
in this example is merely logarithmic (
to be precise), which implies
for all
, in accordance with the AMV theorem. Again, we notice that
and
look rather unlike each other… except that
now resembles the absolute value of the Hilbert transform of
.
Here is the semicircle :

At the endpoints of the arc blows up as
, and therefore
only when
. And indeed, near the endpoints the nonlinearity on scale
is about
, which turns the integrand in the definition of
into
. Hence,
as
. We have
iff
, as needed.
The last example, , has both a cusp and two corners, demonstrating the different rates at which
blows up.

My Scilab code is probably not the most efficient one for this purpose. I calculated using a multidiagonal matrix with
on the main diagonal and
on the nearest
diagonals.
step=0.01; scale=1; x=[-3:step:3]; n=length(x); s=zeros(n)
f=max(0,1-sqrt(abs(x)))
for k=1:(scale/step) do
avg=-diag(ones(n,1))
for j=1:k do
avg=avg+diag(ones(n-j,1)/(2*k),j)+diag(ones(n-j,1)/(2*k),-j)
end
s=s+(avg*f').^2/(step^2*k^3)
end
s=s.^(1/2)
clf(); plot(x,f); plot(x,s,'red')