Akinator - Exemplo com Prolog

Base de Conhecimento

genitor(nilson, paulo).
genitor(nilson, pedro).
genitor(nilson, karlos).
genitor(maria, paulo).
genitor(maria, pedro).
genitor(maria, karlos).
masculino(nilson).
masculino(paulo).
masculino(pedro).
masculino(karlos).
feminino(maria).
pet(paulo, thomas).
pet(paulo, alice).
pet(karlos, frajola).
pet(karlos, chico).
animal(thomas, gato).
animal(alice, gato).
animal(frajola, gato).
animal(chico, gato).
idade(nilson, 60).
idade(maria, 57).
idade(paulo, 32).
idade(pedro, 19).
idade(karlos, 17).

Exemplos de Comandos

Alguns comandos no Prolog para explorar esta base de conhecimento:

1. Quais são os homens na família que possuem filhos?
?- masculino(X), genitor(X, Y).
X = nilson ;
X = paulo.
X = nilson ;
X = pedro.
X = nilson ;
X = karlos.

2. Quem são as filhas da família?
?- feminino(X), genitor(Z, X).
Nenhum resultado encontrado.

3. Quais são as mulheres com mais de 30 anos?
?- feminino(X), idade(X, Y), Y > 30.
X = maria,
Y = 57.

4. Quais são os netos?
?- genitor(X, Y), genitor(Y, Z).
Nenhum resultado encontrado.

5. Quais são meus irmãos?
?- genitor(X, karlos),genitor(X,Y).
X = nilson, Y = paulo ;
X = nilson,
Y = pedro ;
X = nilson,
Y = karlos ;
X = maria,
Y = paulo ;
X = maria,
Y = pedro ;
X = maria,
Y = karlos.