added the possibility of having builtin predicates
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2132 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
186d4e0687
commit
0d7427ad83
@ -41,13 +41,14 @@ setting(cpt_zero,0.0001).
|
|||||||
GoalsLis can have variables, s returns in backtracking all the solutions with
|
GoalsLis can have variables, s returns in backtracking all the solutions with
|
||||||
their corresponding probability */
|
their corresponding probability */
|
||||||
s(GL,P):-
|
s(GL,P):-
|
||||||
setof(Deriv,find_deriv(GL,Deriv),LDup),
|
setof(Deriv,find_deriv(GL,Deriv),LDup),!,
|
||||||
append_all(LDup,[],L),
|
append_all(LDup,[],L),
|
||||||
remove_head(L,L1),
|
remove_head(L,L1),
|
||||||
remove_duplicates(L1,L2),
|
remove_duplicates(L1,L2),
|
||||||
build_ground_lpad(L2,0,CL),
|
build_ground_lpad(L2,0,CL),
|
||||||
convert_to_clpbn(CL,GL,LV,P).
|
convert_to_clpbn(CL,GL,LV,P).
|
||||||
|
|
||||||
|
s(_GL,0.0).
|
||||||
/* sc(GoalsList,EvidenceList,Prob) compute the probability of a list of goals
|
/* sc(GoalsList,EvidenceList,Prob) compute the probability of a list of goals
|
||||||
GoalsList given EvidenceList. Both lists can have variables, sc returns in
|
GoalsList given EvidenceList. Both lists can have variables, sc returns in
|
||||||
backtracking all the solutions with their corresponding probability
|
backtracking all the solutions with their corresponding probability
|
||||||
@ -137,11 +138,41 @@ process_goals([H|T],[HG|TG],[HV|TV]):-
|
|||||||
|
|
||||||
build_ground_lpad([],_N,[]).
|
build_ground_lpad([],_N,[]).
|
||||||
|
|
||||||
build_ground_lpad([(R,S)|T],N,[(N1,Head,Body)|T1]):-
|
build_ground_lpad([(R,S)|T],N,[(N1,Head1,Body1)|T1]):-
|
||||||
rule(R,S,_,Head,Body),
|
rule(R,S,_,Head,Body),
|
||||||
N1 is N+1,
|
N1 is N+1,
|
||||||
|
merge_identical(Head,Head1),
|
||||||
|
remove_built_ins(Body,Body1),
|
||||||
build_ground_lpad(T,N1,T1).
|
build_ground_lpad(T,N1,T1).
|
||||||
|
|
||||||
|
remove_built_ins([],[]):-!.
|
||||||
|
|
||||||
|
remove_built_ins([\+H|T],T1):-
|
||||||
|
builtin(H),!,
|
||||||
|
remove_built_ins(T,T1).
|
||||||
|
|
||||||
|
remove_built_ins([H|T],T1):-
|
||||||
|
builtin(H),!,
|
||||||
|
remove_built_ins(T,T1).
|
||||||
|
|
||||||
|
remove_built_ins([H|T],[H|T1]):-
|
||||||
|
remove_built_ins(T,T1).
|
||||||
|
|
||||||
|
merge_identical([],[]):-!.
|
||||||
|
|
||||||
|
merge_identical([A:P|T],[A:P1|Head]):-
|
||||||
|
find_identical(A,P,T,P1,T1),
|
||||||
|
merge_identical(T1,Head).
|
||||||
|
|
||||||
|
find_identical(_A,P,[],P,[]):-!.
|
||||||
|
|
||||||
|
find_identical(A,P0,[A:P|T],P1,T1):-!,
|
||||||
|
P2 is P0+P,
|
||||||
|
find_identical(A,P2,T,P1,T1).
|
||||||
|
|
||||||
|
find_identical(A,P0,[H:P|T],P1,[H:P|T1]):-
|
||||||
|
find_identical(A,P0,T,P1,T1).
|
||||||
|
|
||||||
convert_to_clpbn(CL,GL,LV,P,GLC):-
|
convert_to_clpbn(CL,GL,LV,P,GLC):-
|
||||||
find_ground_atoms(CL,[],GAD),
|
find_ground_atoms(CL,[],GAD),
|
||||||
remove_duplicates(GAD,GANull),
|
remove_duplicates(GAD,GANull),
|
||||||
|
Reference in New Issue
Block a user