% Computational Intelligence: a logical approach.
% Example database from Section 3.3.1 of
% Copyright (c) 1998, Poole, Mackworth, Goebel and Oxford University Press.
% course(C) is true if C is a university course
course(312).
course(322).
course(315).
course(371).
% department(C,D) is true if course C is offered in department D.
department(312,comp_science).
department(322,comp_science).
department(315,math).
department(371,physics).
% student(S) is true if S is a student
student(mary).
student(jane).
student(john).
student(harold).
% female(P) is true if person P is female
female(mary).
female(jane).
% enrolled(S,C) is true if student S is enrolled in course C
enrolled(mary,322).
enrolled(mary,312).
enrolled(john,322).
enrolled(john,315).
enrolled(harold,322).
enrolled(mary,315).
enrolled(jane,312).
enrolled(jane,322).
% cs_course(C) is true if course C is offered in
% the computer science department
cs_course(C) :- department(C,comp_science).
% math_course(C) is true if course C is offered in
% the mathematics department
math_course(C) :- department(C,math).
% cs_or_math_course(C) is true if course C is offered in
% either the computer science department or the
% mathematics department
cs_or_math_course(C) :- cs_course(C).
cs_or_math_course(C) :- math_course(C).
% example query
% ? enrolled(S,C), department(C,D).
% in_dept(S,D) is true if student S is enrolled
% in a course offered in deparment D
in_dept(S,D) :- enrolled(S,C), department(C,D).