  This paper demonstrates the usefulness of distributed local verification of
proofs, as a tool for the design of self-stabilizing algorithms.In particular,
it introduces a somewhat generalized notion of distributed local proofs, and
utilizes it for improving the time complexity significantly, while maintaining
space optimality. As a result, we show that optimizing the memory size carries
at most a small cost in terms of time, in the context of Minimum Spanning Tree
(MST). That is, we present algorithms that are both time and space efficient
for both constructing an MST and for verifying it.This involves several parts
that may be considered contributions in themselves.First, we generalize the
notion of local proofs, trading off the time complexity for memory efficiency.
This adds a dimension to the study of distributed local proofs, which has been
gaining attention recently. Specifically, we design a (self-stabilizing) proof
labeling scheme which is memory optimal (i.e., $O(\log n)$ bits per node), and
whose time complexity is $O(\log ^2 n)$ in synchronous networks, or $O(\Delta
\log ^3 n)$ time in asynchronous ones, where $\Delta$ is the maximum degree of
nodes. This answers an open problem posed by Awerbuch and Varghese (FOCS 1991).
We also show that $\Omega(\log n)$ time is necessary, even in synchronous
networks. Another property is that if $f$ faults occurred, then, within the
requireddetection time above, they are detected by some node in the $O(f\log
n)$ locality of each of the faults.Second, we show how to enhance a known
transformer that makes input/output algorithms self-stabilizing. It now takes
as input an efficient construction algorithm and an efficient self-stabilizing
proof labeling scheme, and produces an efficient self-stabilizing algorithm.
When used for MST, the transformer produces a memory optimal self-stabilizing
algorithm, whose time complexity, namely, $O(n)$, is significantly better even
than that of previous algorithms. (The time complexity of previous MST
algorithms that used $\Omega(\log^2 n)$ memory bits per node was $O(n^2)$, and
the time for optimal space algorithms was $O(n|E|)$.) Inherited from our proof
labelling scheme, our self-stabilising MST construction algorithm also has the
following two properties: (1) if faults occur after the construction ended,
then they are detected by some nodes within $O(\log ^2 n)$ time in synchronous
networks, or within $O(\Delta \log ^3 n)$ time in asynchronous ones, and (2) if
$f$ faults occurred, then, within the required detection time above, they are
detected within the $O(f\log n)$ locality of each of the faults. We also show
how to improve the above two properties, at the expense of some increase in the
memory.
