- #!/usr/bin/prolog
- %if(and(young,poor),student)
- :- op(999,xfx,if).
- :- op(998,xfy,or).
- :- op(997,xfy,and).
- :- op(997,fy,not).
- student if
- young and poor and not dumb.
- dumb if not smart.
- cf(young,0.4).
- cf(poor,0.9).
- cf(smart,0.9).
- belief(X,Y) :- cf(X,Y).
- belief(X,Cf) :-
- X if Z,
- belief(Z,Cf).
- belief(X and Y,CF0) :-
- belief(X,CF1),
- belief(Y,CF2),
- CF0 is min(CF1,CF2).
- belief(X or Y,CF0) :-
- belief(X,CF1),
- belief(Y,CF2),
- CF0 is max(CF1,CF2).
- belief(not X,CF0) :-
- belief(X,CF1),
- CF0 is 1 - CF1.