  In successive cancellation (SC) polar decoding, an incorrect estimate of any
prior unfrozen bit may bring about severe error propagation in the following
decoding, thus it is desirable to find out and correct an error as early as
possible. In this paper, we first construct a critical set $S$ of unfrozen
bits, which with high probability (typically $>99\%$) includes the bit where
the first error happens. Then we develop a progressive multi-level bit-flipping
decoding algorithm to correct multiple errors over the multiple-layer critical
sets each of which is constructed using the remaining undecoded subtree
associated with the previous layer. The \emph{level} in fact indicates the
number of \emph{independent} errors that could be corrected. We show that as
the level increases, the block error rate (BLER) performance of the proposed
progressive bit flipping decoder competes with the corresponding cyclic
redundancy check (CRC) aided successive cancellation list (CA-SCL) decoder,
e.g., a level 4 progressive bit-flipping decoder is comparable to the CA-SCL
decoder with a list size of $L=32$. Furthermore, the average complexity of the
proposed algorithm is much lower than that of a SCL decoder (and is similar to
that of SC decoding) at medium to high signal to noise ratio (SNR).
