From cd45c64dccf0a495ec70fcaeb8b60c2a56655992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Tue, 27 Mar 2012 14:57:12 +0100 Subject: [PATCH] allow optimisation and preserve ordering. --- packages/CLPBN/clpbn/bdd.yap | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/CLPBN/clpbn/bdd.yap b/packages/CLPBN/clpbn/bdd.yap index 1f37c5c21..e9ccd83c1 100644 --- a/packages/CLPBN/clpbn/bdd.yap +++ b/packages/CLPBN/clpbn/bdd.yap @@ -53,8 +53,6 @@ Va <- P*X1*Y1 + Q*X2*Y2 + ... :- use_module(library(rbtrees)). -:- attribute id/1. - :- dynamic network_counting/1. @@ -346,6 +344,7 @@ eval_outs((V=F).Outs) :- V = NF, get_outs(Outs). +%simplify_exp(V,V) :- !. simplify_exp(V,V) :- var(V), !. simplify_exp(S1+S2,NS) :- !, simplify_exp(S1, SS1), @@ -367,7 +366,7 @@ simplify_sum(V1, V2, O) :- ( V2 == 0 -> O = V1 ; V2 == 1 -> O = 1 ; O = V1+V2 ) /* var(V1) , nonvar(V2) */ ) ; ( var(V2) -> - ( V1 == 0 -> O = V2 ; V1 == 1 -> O = 1 ; O = V2+V1 ) ; /* nonvar(V1) , var(V2) */ + ( V1 == 0 -> O = V2 ; V1 == 1 -> O = 1 ; O = V1+V2 ) ; /* nonvar(V1) , var(V2) */ ( V2 == 0 -> O = V1 ; V2 == 1 -> O = 1 ; V1 == 0 -> O = V2 ; V1 == 1 -> O = 1; O = V1+V2 ) /* nonvar(V1) , nonvar(V2) */ ) ). @@ -379,7 +378,7 @@ simplify_prod(V1, V2, O) :- ( V2 == 0 -> O = 0 ; V2 == 1 -> O = V1 ; O = V1*V2 ) /* var(V1) , nonvar(V2) */ ) ; ( var(V2) -> - ( V1 == 0 -> O = 0 ; V1 == 1 -> O = V2 ; O = V2*V1 ) ; /* nonvar(V1) , var(V2) */ + ( V1 == 0 -> O = 0 ; V1 == 1 -> O = V2 ; O = V1*V2 ) ; /* nonvar(V1) , var(V2) */ ( V2 == 0 -> O = 0 ; V2 == 1 -> O = V1 ; V1 == 0 -> O = 0 ; V1 == 1 -> O = V2; V1 == V2 -> O = V1 ; O = V1*V2 ) /* nonvar(V1) , nonvar(V2) */ ) ).