To start using SWI-Prolog under Linux you need to have it installed. Fortunately, SWI-Prolog is a standard package in every reasonable Linux distribution.
In Ubuntu, you can use the Synaptic Package Manager to check (if unsure) or install (if not performed yet) the SWI-Prolog.
In order to start using Prolog follow the simplest recipe:
- Make a directory to store your Prolog programs, for example
- Create an empty text file with a name of your choice and extension
.plin this directory; for example
socrates.pl. You can use any ASCII text editor of your preference (e.g. vi, vim, gedit, emacs).
The above steps may look as follows:
ali@ali:~/ALI/PROLOG$ mkdir prolog ali@ali:~/ALI/PROLOG$ cd prolog ali@ali:~/ALI/PROLOG/prolog$ gedit socrates.pl
- Edit your first program with use of the editor. The program may be as follows:
man(plato). man(socrates). mortal(X):- man(X).
- Open a shell window and go to the directory where you store your Prolog programs (e.g.
- Start the Prolog interpreter/compiler. In most cases you just write
swipl. The prompt changes to
?-. Disappointed? No graphical environment? Do not worry. Intelligent people quickly get used to this modest environment and appreciate the ideas behind Prolog.
- Now you have to load your program. This can be done by typing
[programname].command in the shell window. Rememebr that the name is not followed by
.pland after the closing bracket there must be a full stop. For example type
- In case there are no errors you can start using the program by asking questions. You just type a predicate name (one appearing in the program) with the appropriate number of arguments in parentheses; the arguments must be separated by commas. Remember to always add full stop.
The above steps may look like:
ali@ali:~/ALI/PROLOG/prolog$ prolog Welcome to SWI-Prolog (Multi-threaded, Version 5.6.14) Copyright (c) 1990-2006 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- [socrates]. % socrates compiled 0.00 sec, 864 bytes Yes ?-
- If you expect more than one answer, use the colon (
;) to produce them.
This may look like:
?- man(socrates). Yes ?- man(X). X = plato ; X = socrates ; No ?- mortal(socrates). Yes ?- mortal(X). X = plato ; X = socrates ; No ?-
socrates, i.e. ones starting with a lower case letter are constants (proper names); variable names starts with an upper case letter. Both of them are parameters of predicates (relations) such as
mortal. Every fact (a simple statement) such as
man(socrates). is followed by a full stop. Every clause such as
mortal(X):- man(X). represents and inference rule and is also followed by a full stop.
You can modify your program with the editor. After saving it always re-load it.
*To stop the Prolog interpreter/compiler type in the
To obtain help you may type in one of the following commands:
?- help. Explain the basics of the help system. ?- help(topic). Show help-page on the specified topic. ?- apropos(string). Show all topics holding `string' in their summary documentation.
Have a fun by modifying the program and asking more and more complex questions!