19:- use_module(library(phil)). 20:- if(current_predicate(use_rendering/1)). 21:- use_rendering(c3). 22:- use_rendering(lpad). 23:- endif. 24
25:- phil. 26
27
28
29bg([]).
30
31:- begin_in. 32advisedby(A,B):0.3:-
33 student(A),
34 professor(B),
35 project(A,C),
36 project(A,C),
37 hidden_1(A,B,C).
38advisedby(A,B):0.6 :-
39 student(A),
40 professor(B),
41 ta(C,A),
42 taughtby(C, B).
43hidden_1(A,B,C):0.2 :-
44 publication(P, A, C),
45 publication(P, B, C).
46:- end_in. 47
48
49fold(ai, [ai]).
50
51output(advisedby/2).
52
53
54input(student/1).
55input(professor/1).
56input(project/2).
57input(publication/3).
58input(taughtby/2).
59input(ta/2).
60
61
62
64advisedby(ai, harry, ben).
65student(ai, harry).
66professor(ai, ben).
67
68taughtby(ai, c1, ben).
69taughtby(ai, c2, ben).
70ta(ai, c1, harry).
71ta(ai, c2, harry).
72
73project(ai, harry, pr1).
74project(ai, harry, pr2).
75project(ai, ben, pr1).
76project(ai, ben, pr2).
77publication(ai, p1, harry, pr1).
78publication(ai, p2, harry, pr1).
79publication(ai, p3, harry, pr2).
80publication(ai, p4, harry, pr2).
81publication(ai, p1, ben, pr1).
82publication(ai, p2, ben, pr1).
83publication(ai, p3, ben, pr2).
84publication(ai, p4, ben, pr2)
?-
inference_hplp(advisedby(harry, ben),ai,Prob)
. % Prob contains the probability that harry is advised by ben in the ai interpretation ?-inference_hplp(advisedby(harry, ben),ai,Prob,Circuit)
. % Same as the previous query but also returns in Circuit a term representing the arithmetic circuit */