he case of plain English-text datafiles is not the best example, because as their size increases the symbol probability distribution becomes closer to that of the standard English-source reference, for which (as we have shown) the compression ratio is limited to r = 15.76%. One can alleviate the overhead tax represented by the coding-tree information by using a standard common reference, which is called the codebook. Such a codebook contains different optimal coding trees for generic sources as varied as standard lan- guages (English, French, German, etc.), programming-language source codes (C++, Pascal, FORTRAN, HTML, Java, etc.), tabulated records (students, payroll, company statistics, accounting, etc.), or just raw binary datafiles, for instance. An optimal cod- ing tree devised for all inventoried source types can also be included in the codebook. Choosing a specific coding tree from the codebook is called semantic-dependent coding. This choice means that one has prior knowledge of the type of source or source semantics considered, and this knowledge guides the choice of the most appropriate code to select from the codebook menu. If the codebook contains N coding trees for these different sources, the overhead only represents log2 N bits. This overhead must be included at the beginning of the compressed file, to indicate which coding tree (or source mapping) has been used for compression. The coding efficiency (or compression ratio) obtained with a codebook is never greater than that obtained with a case-specific Huffman coding. However, if one includes the overhead bits in the compressed file, the conclusion could be the opposite. Indeed, a 1985 experiment consisted in comparing results obtained by compressing different types of programming-language source codes (out of 530 programs), using either a codebook or case-by-case Huffman coding, the corresponding overheads being included computation. 9 The result was that the codebook approach always produced higher compression ratios. The conclusion is that, tak