document BDD package
This commit is contained in:
parent
bb6ae90019
commit
448e2c88e1
97
packages/bdd/examples/bdd.yap
Normal file
97
packages/bdd/examples/bdd.yap
Normal file
@ -0,0 +1,97 @@
|
||||
|
||||
:- style_check(all).
|
||||
|
||||
:- use_module(library(bdd)).
|
||||
:- use_module(library(lists)).
|
||||
:- use_module(library(maplist)).
|
||||
|
||||
t1 :-
|
||||
t1(X),
|
||||
writeln(X),
|
||||
fail.
|
||||
t1.
|
||||
|
||||
t1(BDD:T) :-
|
||||
bdd_new(X+(_Y+X)*(-_Z), BDD),
|
||||
bdd_tree(BDD,T).
|
||||
|
||||
|
||||
t2 :-
|
||||
t2(X),
|
||||
writeln(X),
|
||||
fail.
|
||||
t2.
|
||||
|
||||
t2(V) :-
|
||||
bdd_new(X+(Y+X)*(-Z), BDD),
|
||||
member(X, [0,1]),
|
||||
member(Y, [0,1]),
|
||||
member(Z, [0,1]),
|
||||
bdd_eval(BDD, V).
|
||||
|
||||
t3 :-
|
||||
t3(X),
|
||||
writeln(X),
|
||||
fail.
|
||||
t3.
|
||||
|
||||
t3(V) :-
|
||||
bdd_new(X+(Y+X)*(-Z), BDD),
|
||||
bdd_tree(BDD, bdd(_, T, _Vs) ),
|
||||
reverse(T, RT),
|
||||
member(X, [0,1]),
|
||||
member(Y, [0,1]),
|
||||
member(Z, [0,1]),
|
||||
foldl(eval_bdd, RT, _, V).
|
||||
|
||||
eval_bdd(pp(P,X,L,R), _, P) :-
|
||||
P is ( X/\L ) \/ ( (1-X) /\ R ).
|
||||
eval_bdd(pn(P,X,L,R), _, P) :-
|
||||
P is ( X/\L ) \/ ( (1-X) /\ (1-R) ).
|
||||
|
||||
|
||||
|
||||
t4 :-
|
||||
t4(_),
|
||||
fail.
|
||||
t4.
|
||||
|
||||
t4([X,Y,Z]) :-
|
||||
bdd_new(X+(Y+X)*(-Z), BDD),
|
||||
bdd_print(BDD, user_output).
|
||||
|
||||
|
||||
|
||||
t5 :-
|
||||
t5(X),
|
||||
writeln(X),
|
||||
fail.
|
||||
t5.
|
||||
|
||||
t5(V) :-
|
||||
bdd_new(X+(Y+X)*(-Z), BDD),
|
||||
member(X, [0.3,0.7]),
|
||||
member(Y, [0.4,0.6]),
|
||||
member(Z, [0.9,0.1]),
|
||||
bdd_to_probability_sum_product(BDD, V).
|
||||
|
||||
|
||||
t6 :-
|
||||
t6(X),
|
||||
writeln(X),
|
||||
fail.
|
||||
t6.
|
||||
|
||||
t6(V) :-
|
||||
bdd_new(X+(Y+X)*(-Z), BDD),
|
||||
bdd_tree(BDD, bdd(_, T, _Vs) ),
|
||||
reverse(T, RT),
|
||||
member(X, [0.3,0.7]),
|
||||
member(Y, [0.4,0.6]),
|
||||
member(Z, [0.9,0.1]),
|
||||
foldl(eval_prob, RT, _, V).
|
||||
|
||||
eval_prob(pp(P,X,L,R), _, P) :-
|
||||
P is X*L + (1-X) * R.
|
||||
eval_prob(pn(P,X,L,R), _, P) :-
|
||||
P is X * L + (1-X) * (1-R).
|
Reference in New Issue
Block a user