INF 1771 Inteligência Artificial  
Aula 10 Utilizando o SWI-Prolog em C++  
Edirlei Soares de Lima  
<elima@inf.puc-rio.br>  
SWI-Prolog  
http://www.swi-prolog.org/download/stable  
Configuração  
Control Panel -> System ->Advanced-> Environment Variables  
Adicionar o diretório “C:\Program Files\pl\bin” a variável “PATH” do sistema.  
Configuração Visual Studio  
Include Directory: “C:\Program Files\pl\include”  
Configuração Visual Studio  
Library Directory: “C:\Program Files\pl\lib\”  
Configuração Visual Studio  
Dependência: swipl.lib  
Exemplo de Programa  
progenitor(sara,isaque).  
progenitor(abraao,isaque).  
progenitor(abraao,ismael).  
progenitor(isaque,esau).  
progenitor(isaque,jaco).  
progenitor(jaco,jose).  
mulher(sara).  
homem(abraao).  
homem(isaque).  
homem(ismael).  
homem(esau).  
homem(jaco).  
homem(jose).  
filho(Y,X) :- progenitor(X,Y).  
mae(X,Y) :- progenitor(X,Y), mulher(X).  
avo(X,Z) :- progenitor(X,Y), progenitor(Y,Z).  
irmao(X,Y) :- progenitor(Z,X), progenitor(Z,Y).  
ancestral(X,Z) :- progenitor(X,Z).  
ancestral(X,Z) :- progenitor(X,Y), ancestral(Y,Z).  
Exemplo de Programa  
#
#
include <SWI-cpp.h>  
include <iostream>  
using namespace std;  
int main(){  
char* argv[] = {"swipl.dll", "-s", "D:\\teste.pl", NULL};  
PlEngine e(3,argv);  
PlTermv av(2);  
av[1] = PlCompound("jose");  
PlQuery q("ancestral", av);  
while (q.next_solution())  
{
cout << (char*)av[0] << endl;  
}
cin.get();  
return 1;  
}
Manual  
http://www.swi-prolog.org/pldoc/index.html  
Bibliografia Complementar  
Bratko, I., “Prolog Programming for Artificial  
Intelligence(3rd edition), Addison Wesley, 2000.  
Clocksin, W.F., Mellish, C.S.,Programming in  
Prolog” (5th edition), Springer, 2003.  
Sterling, L., Shapiro, E.,The Art of Prolog (2th  
edition), MIT Press, 1994.