| Did you know ... | Search Documentation: |
| Pack pac -- prolog/zdd/zdd.pl |
opp_compare(C, 1, 2).
?- opp_compare(C, a->b, b).
?- opp_compare(C, p(0,0), p(1,0)).
?- opp_compare(C, p(1,0)-p(0,0), p(1,0)-p(1,0)).--- only basic expressions follow ---
x x if x is nummber, string, or list.
$E E (quote).
@(a) {{a}} as a singleton family of a.
!E apply E without evaluating args.
--- expression ---
X + Y join (union) of X and Y
X - Y subtract Y from X
X \ Y subtract Y from X
X & Y intersection of X and Y
merge(X, Y) merge/multiply X and Y
X * Y merge/multiply X and Y
X // Y quotient X by Y.
X / Y remainder of X by Y.
prod(X, YO) product of X and Y
X ** Y product of X and Y
pow(X) powerset of X
power(X) powerset of X
set(L) read L a singleton family {L}.
sets(X, S) convet X in S to list of lists
*E merge all elements of a list E.
+E join all elements of a list E.
{A,B,..} family of sets [A, B, ...]
--- Boolean terms ---
cnf(F, X) X is CNF of F. dnf(F, X) X is DNF of F,
cofact(Z, t(X, 0, Y), S).
Having analogy Z = [X|Y] in mind.zdd_disjoint_merge(X, Y, Z),
psa(Z).
?- X<< +[*[a,b], b], Y<< +[*[a,c], c], zdd_disjoint_merge(X, Y, Z),
psa(Z).
?- X<< +[*[a,b], [b]], Y<< +[*[a,c], [c]], zdd_disjoint_merge(X, Y, Z),
psa(Z).pow([a]), psa(X).
?- X<<{[a]}, psa(X).
?- ((X << pow([a, b, c]), zdd_rand_path(X))).
?- ((X << {[a], [b], [c]}, zdd_rand_path(X))).
?- ((X << pow([a, b, c, d, e, f, g]), zdd_rand_path(X))).
a(e0,e1), where a is an atom,
e0 and e1 are integer expressions.
A is the list of atoms ai with suffix i (j=<i=<k),
where j and k is the value of e0 and e1.charlist(A-B, X).
?- charlist(a, c, X).
@ X = [a, b, c].
?- ((zdd_insert(a, 1, X), zdd_insert(b, X, X1), prz(X1))).
?- ((X<<pow([a,b,c]), zdd_insert(x, X, X1), psa(X1))).
time(( N = 100, numlist(1, N, Ns), X<<pow(Ns), card_filter_between(50, 51, X, Y), card(Y, C))).The following predicates are exported, but not or incorrectly documented.