In the lab we introduced the built-in predicate '=
'
which is true when two terms are equal (this predicate appears in
section 2.2 "Matching" in the Bratko text).
We also introduced dif
which is true when two terms
are different. Bratko uses different operators for this
purpose, but in this class we will use dif
since it
belongs to the pure core of Prolog (a concept we will discuss more
later).
Here are the solutions to a couple of exercises that we solved in the lab:
color(red). color(blue). color(green). solve :- color(Czech), color(Slovakia), color(Germany), color(Poland), color(Austria), color(Hungary), color(Ukraine), dif(Czech, Germany), dif(Czech, Poland), dif(Czech, Slovakia), dif(Czech, Austria), dif(Slovakia, Poland), dif(Slovakia, Ukraine), dif(Slovakia, Hungary), dif(Germany, Poland), dif(Germany, Austria), dif(Poland, Ukraine), dif(Austria, Hungary), dif(Hungary, Ukraine).
person(katka). person(maria). person(roman). different(P, Q, R) :- person(P), person(Q), person(R), dif(P, Q), dif(Q, R), dif(P, R). solution(Doctor, Lawyer, Teacher, Piano, Flute, Violin) :- different(Doctor, Lawyer, Teacher), different(Piano, Flute, Violin), dif(maria, Doctor), Lawyer = Piano, dif(maria, Teacher), Violin = Doctor, dif(katka, Doctor).