98 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			98 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | :- 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). |