export h_code(R, C).
h_tree(0, X, nil, nil, C, 0) <- freq(X,C).
least(I+1, least<(R, C)>) <- h_tree(I, R, _, _, C, _).
single(least, (R,C), (R,C)).
multi(least, (R,C), (R_old, C_old), (R, C))<-C<C_old.
multi(least, (R,C), (R_old, C_old), (R_old, C_old))<-C>=C_old.
h_tree(I+1, R, S1, S2, C, 1-Odd) <- h_tree(I, R, S1, S2, C, Odd), ~least(I+1,(R,C)).
h_tree(I+1, R, S1, S2, C, 0) <-
h_tree(I, _, _, _, _, 1),
least(I, (S1, C1)),
least(I+1, (S2, C2)),
C=C1+C2,
R=(S1,S2).
h_code(R,C)<-h_tree(_,R,_,_,C,_).
Haixun Wang
4/22/1998