#!/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.