which justifies the interest of the single-pass adaptive method. The FGK algorithm uses what is called the sibling property of coding trees, as introduced by Gallager. 11 This algorithm is defined as follows: A coding tree has a sibling property in the case where all nodes, except the root and the terminal (leaf) nodes, have a sibling node and can be listed in order of nondecreasing weights. To grasp the meaning of this seemingly obscure definition, and understand the concept of "sibling property," consider the two illustrative examples shown in Fig. 10.2. The two coding trees shown in Fig. 10.2 are associated with the same source X = {A, B, C, D, E, F}, whose probability distribution is p(xi) = {0.4, 0.2, 0.17, 0.13, 0.06, 0.04}. The weights (or combined probabilities) of each of the nodes are indicated. Except for the root node at left, and the leaf nodes at right, intermediate nodes are seen to come with a sibling of equal or lower weight. Looking at the tree (a) in the figure, we observe that there are five sibling pairs responding to this description. However, the group formed by the pairs (0.2-0.1) and (0.17-0.13) is not ordered according to increasing or decreasing weights. The above-stated "sibling property" rule requires that the nodes be arranged by successive pairs of nondecreasing weights, (0.1-0.13) then (0.17-0.2), and this is precisely the case of the second tree (b) shown in Fig. 10.2. Not surprisingly, this rule "compliant" tree is a Huffman tree, as one may easily check. Also, Gallager showed another powerful property, according to which A binary prefix code is a Huffman code if and only if its coding tree has the sibling property. 11 See: R. G. Gallager, Variations on a theme by Huffman. IEEE Trans. Inform. Theory, 24 (1978), 668-74. Integer, arithmetic, and adaptive coding The implementation of the FGK algorithm proceeds as follows. At the start, the tree is a single leaf node, which is referred to as the 0-node. Assume that there are n symbols in the message sequence to be encoded. The encode