Did you know ... | Search Documentation: |
Pack pac -- prolog/zdd/zdd-array.pl |
==
stored in the hash table of S.open_hash(3, H)
, hash(a, H, X)
, write(H)
.
It is explained in terms of famiy of sets as follows.
If X is given then
Y is a triple t(A, L, R)
such that
A is the minimum atom in X w.r.t specified compare predicate,
L = { U in X | not ( A in U ) },
R = { V \ {A} | V in X, A in V }.
If Y is given then
X = union of L and { unionf of U and {A} | U in R }.
Non standard use of cofact/3 is possible keeping the structure sharing, but withoug zero_suppress rule. IMO the rule is only meaningful under family of sets semantics for the empty family {} of sets.
?- open_state(S)
, cofact(X, [a,b,d], S)
, cofact(X, L, S)
.
?- open_state(S)
, cofact(X, [a], S)
, cofact(X, [A|B], S)
.
?- open_state(S)
, cofact(X, f(a,b,d), S)
, cofact(X, L, S)
.
zdd_ord_copy(X, S, Y, T)
for fresh state T,
then the content of the orginal S is destructively replaced
with that of T by setarg/3. T is closed at exit.The following predicates are exported, but not or incorrectly documented.