This is an old revision of the document!
Objective
Gain experience with logic programming.
Become familiar with Prolog.
Gain understanding of the declarative nature of prolog.
Installation
For this class, we use SWI-Prolog. You can download binaries for a Windows or macOS system here.
Also, there is an unofficial tutorial for installation here.
For Mac with Homebrew installed, you can do this command (info here):
brew install swi-prolog
For Ubuntu, you can do these commands:
sudo add-apt-repository ppa:swi-prolog/stable
sudo apt-get update
sudo apt-get install swi-prolog
Deliverables
You will turn in two prolog programs (in separate files) that solve the following logic puzzles:
To help you start, we've provided a sample solution to It's a tie. Use this as a model for your own solutions.
Notes
Just copy and paste the all_different function. It simply checks to make sure each item in the list is unique.
Check spelling errors. There is no such thing as misspelled atoms. So speigel and spiegel are both valid but different.
Once you have a solution, just check whether it satisfies each of the numbered rules in the problem.
These problems make extensive use of the “not” operator, \+.
\+ works as you expect when all variables are completely bound.
If E contains unbound variables, \+E will try to find bindings to that will make E true. If Successful \+ will fail.
This lab is taken from
this site. There may be additional resources there.