introduce and use low_high_hentry/3

Also, I have found a faster test case for BDD merging:

        :- use_module(clpb).

        sat(X, Y, X=:=Y).
        sat(X, Y, X#Y).
        sat(X, Y, X+Y).
        sat(X, Y, X*Y).

        vs_formula([V|Vs], F) :- vs_formula_(Vs, V, F).

        vs_formula_([], F, F).
        vs_formula_([V|Vs], F0, F) :-
                sat(V, F0, Sat),
                vs_formula_(Vs, Sat, F).

        run :-
                sat(A, B, Sat1),
                sat(C, D, Sat2),
                sat(E, F, Sat3),
                sat(Sat1),
                sat(Sat2),
                sat(Sat3),
                Vs0 = [A,B,C,D,E,F],
                permutation(Vs0, Vs),
                vs_formula(Vs, Formula),
                sat(Formula),
                false.

This finds the previous mistake in bdd_and/3 faster.