1:- module(dictpow, []).    2
    3:- use_module(zdd('zdd-array')).    4:- use_module(zdd(zdd)).    5:- use_module(pac(op)).    6
    7% ?- open_zdd_dict, zdd_dict(I, t(a, 0, 1), Val).
    8% ?- open_zdd_dict, zdd_dict(I, t(a, 0, 1), Val), Val=a.
    9% ?- open_zdd_dict, zdd_dict(I, t(a, 0, 1), Val), Val=a, zdd_dict(I, X, R).
   10% ?- open_zdd_dict, zdd_dict(I, t(a, 0, 1), Val), Val=a,
   11%	zdd_dict(J, t(b, I, I), Val2), zdd_dict(I, _, Val2).
   12% ?- open_zdd_dict, zdd_dict(I, t(a, 0, 1), Val), Val=a,
   13%	zdd_dict(J, t(b, I, I), Val2), Val2=c,
   14%	zdd_dict(J, X, Val3),
   15%	zdd_dict(K, X, Val4).
   16
   17% ?- open_zdd_dict.
   18% ?- b_getval(zdd_dict, R), write(R).
   19% ?- open_zdd_dict, b_getval(zdd_dict, R), write(R).
   20% ?- zdd_dict_power([a,b], P, C).  % Error. Why ???
   21% ?- zdd_dict_power([], P, C).
   22% ?- open_zdd_dict, zdd_dict_power([a,b,c], P, C).
   23% ?- numlist(1, 100, Ns),open_zdd_dict, zdd_dict_power(Ns, P, C).
   24% ?- numlist(1, 100, Ns),open_zdd_dict, zdd_dict_power(Ns, P, C).
   25
   26zdd_dict_power([], 1, 1).
   27zdd_dict_power([A|As], X, C):-
   28	zdd_dict_power(As, Y, C0),
   29	zdd_dict(X, t(A, Y, Y), C),
   30	C is C0 + C0