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.