ERROR DETECTING AND CORRECTING CODES 157 



To prove the equivalence of any two optimal packings we note that, if 

 the packing is optimal, then each of the two sub-cubes has half the points. 

 Calling this the first coordinate we see that half the points have a and half 

 have a 1. The next subdivision will again divide these into two equal groups 

 having O's and I's respectively. After {n — 1) such stages we have, upon re- 

 ordering the assigned values if there be any, exactly the first n — \ positions 

 of the code devised in section 2. To each sequence of the first n — \ coordi- 

 nates there exist n — \ other sequences which dififer from it by one co- 

 ordinate. Once we fix the n-ih. coordinate of some one point, say the origin 

 which has all O's, then to maintain the known minimum distance of two 

 units between code points the w-th coordinate is uniquely determined for all 

 other code points. Thus the last coordinate is determined within a comple- 

 mentation so that any optimal code is equivalent to that given in section 2. 



It is interesting to note that in these two proofs we have used only the 

 assumption that the code symbols are all of length n. 



7. Single Error Correcting Codes 



It has probably been noted by the reader that, in the particular codes of 

 Part I, a distinction was made between information and check positions, 

 while, in the geometric model, there is no real distinction between the various 

 coordinates. To bring the two treatments more in line with each other we re- 

 define a systematic code as a code whose symbol lengths are all equal and 



1. The positions checked are independent of the information contained 

 in the symbol. 



2. The checks are independent of each other. 



3. We use parity checks. 



This is equivalent to the earlier definition. To show this we form a matrix 

 whose i-\h. row has I's in the positions of the i-th parity check and O's else- 

 where. By assumption 1 the matrix is fixed and does not change from code 

 symbol to code symbol. From 2 the rank of the matrix is k. This in turn 

 means that the system can be solved for k of the positions expressed in 

 terms of the other n — k positions. Assumption 3 indicates that in this 

 solving we use the arithmetic in which 1+1 = 0. 



There exist non-systematic codes, but so far none have been found which 

 for a given n and minimum distance d have more code symbols than a sys- 

 tematic code. Section 9 gives an example of a non-systematic code. 



Turning to the main problem of this section we find from Table V that a 

 single error correcting code has code points at least three units from each 

 other. Thus each point may be surrounded by a sphere of radius 1 with no 

 two spheres having a point in common. Each sphere has a center point and 



