syndrome decoding is able to detect and correct 2k single bit errors, as we have seen earlier. What about the remaining error patterns, which contain more than one bit error? These are of two kinds. Since the block code has 2k block codewords, there exist: (a) 2k error patterns that exactly match any of the block codewords or belong to the block codeword set, and (b) 2n - 2k error patterns that do not belong to the block codeword set. In case (a), the syndrome vector is identical to zero (S = (0, 0, 0)), which means that the errors remain undetected (and for that matter, uncorrected). In case (b), the syndrome vector is nonzero (S # (0, 0, 0)), which indicates the existence of errors, but, as we have seen, such multiple bit errors cannot be corrected. Consider the first case (a) where the code fails to detect any error, and let us estimate the corresponding probability, q(E). It is easily established that this probability is given by (11.13) where p is the probability of a single bit error and Aj is the number of block codewords having a Hamming weight of i (to recall, having i bits equal to one). We note that A for = 1, , dmin - 1. It is left as an exercise that in our (n, k) = (7, 4) code example, we have q(E) < 10-8 for p < 10-3, and q(E) < 10-14 for p < 10-5, which illustrates that the likelihood of the code to fail in detecting any errors is comparatively small, even at single-bit-error rates as high as p = 10-5 - 10-3. In view of the above, the key question coming to mind is: "Given a block code, what is the maximum number of errors that can be detected and corrected with absolute certainty?" The rigorous answer to this question is provided by a fundamental property of linear block codes. This property states that the code has the power to correct any error patterns of Hamming weight w (or any number of W errors in the block code), provided that (11.14) where dmin is the minimum Hamming distance, and where the brackets {x} indicate the largest integer contained in the argument X, namely {(dmin - 1)/2} = L(d