1. #!/usr/bin/prolog
  2.  
  3. %if(and(young,poor),student)
  4.  
  5. :- op(999,xfx,if).
  6. :- op(998,xfy,or).
  7. :- op(997,xfy,and).
  8. :- op(997,fy,not).
  9.  
  10. student if
  11. young and poor and not dumb.
  12.  
  13. dumb if not smart.
  14.  
  15. cf(young,0.4).
  16. cf(poor,0.9).
  17. cf(smart,0.9).
  18.  
  19. belief(X,Y) :- cf(X,Y).
  20. belief(X,Cf) :-
  21. X if Z,
  22. belief(Z,Cf).
  23.  
  24. belief(X and Y,CF0) :-
  25. belief(X,CF1),
  26. belief(Y,CF2),
  27. CF0 is min(CF1,CF2).
  28.  
  29. belief(X or Y,CF0) :-
  30. belief(X,CF1),
  31. belief(Y,CF2),
  32. CF0 is max(CF1,CF2).
  33.  
  34. belief(not X,CF0) :-
  35. belief(X,CF1),
  36. CF0 is 1 - CF1.