Fusca - Exemplo com Prolog

Base de Conhecimento

sexo(jose, masculino).
sexo(elaine, feminino).
sexo(vitoria, feminino).
sexo(pedro, masculino).
sexo(marlene, feminino).
sexo(joao, masculino).
sexo(tiao, masculino).
sexo(rita, feminino).
possuitransporte(jose, palio1).
possuitransporte(elaine, falcon).
possuitransporte(vitoria, fusca).
possuitransporte(marlene, fiesta).
possuitransporte(joao, monark).
possuitransporte(tiao, palio2).
tipodetransporte(palio1, carro).
tipodetransporte(palio2, carro).
tipodetransporte(falcon, moto).
tipodetransporte(fusca, carro).
tipodetransporte(fiesta, carro).
tipodetransporte(monark, bicicleta).
custa(palio1, 15000).
custa(palio2, 25000).
custa(falcon, 12000).
custa(fusca, 5000).
custa(fiesta, 29000).
custa(monark, 200).
namorado(jose, elaine).
namorado(pedro, vitoria).
namorado(tiao, rita).

Exemplos de Comandos

Alguns comandos no Prolog para explorar esta base de conhecimento:

1. Quem namora com um namorado que possui algum transporte?
?- namorado(X, Y), possuitransporte(Y, _).
X = jose,
Y = elaine;
X = pedro,
Y = vitoria;

2. Quais as mulheres possuem carro?
?- sexo(X, feminino), possuitransporte(X, Y), tipodetransporte(Y, carro).
X = vitoria,
Y = fusca;
X = marlene,
Y = fiesta;

3. Quem não tem transporte?
?- sexo(X, _), \+ possuitransporte(X, _).
X = pedro;
X = rita.

4. Quem tem carro que custa menos de 20.000 reais?
?- possuitransporte(X, Y), tipodetransporte(Y, carro), custa(Y, C), C < 20000.
X = jose,
Y = palio1,
C = 15000;
X = vitoria,
Y = fusca,
C = 5000;

5. Quem possui transporte mas não é carro? ?- possuitransporte(X, Y), tipodetransporte(Y, Z), Z \= carro. X = elaine,
Y = falcon,
Z = moto;
X = joao,
Y = monark,
Z = bicicleta;

6. Quem não tem namorado ou namorada?
?- sexo(X, _), \+ namorado(X, _).
X = elaine;
X = vitoria;
X = marlene;
X = joao;
X = rita.

7. Quem tem palio e tem namorada? ?- possuitransporte(X, Y), tipodetransporte(Y, carro), (Y = palio1; Y = palio2), namorado(X, _).
X = jose,
Y = palio1;
X = tiao,
Y = palio2.