Escolar Documentos
Profissional Documentos
Cultura Documentos
conectivo
implicao
negao
conjuno
disjuno
conectivo em PROLOG
pai(X,Y) :- genitor(X,Y), homem(X).
not(homem(samuel)).
pai(X,Y) :- genitor(X,Y), homem(X).
filho(X,Y) :- pai(Y,X), homem(X).
filho(X,Y) :- mae(Y,X), homem(X).
ou
filho(X,Y) :- (pai(Y,X); mae(Y,X)),
homem(X).
bi-implicao
OBJETIVOS:
usar PROLOG para realizar provas sobre relaes de parentesco representadas e j formalizadas na questo 5 (5.1
a 5.3) da lista de exerccios n7;
usar PROLOG para definir regras recursivas sobre relaes de parentesco representadas e j formalizadas na
questo 5.4 da lista de exerccios n7.
ATIVIDADE 1: definir sexo das pessoas
passo 1: obtenha no AVA (ava.furb.br/unidade 04) a base de fatos e regras sobre relaes de parentesco
(familia.pl).
passo 2: carregue a base no SWI-PROLOG.
passo 3: execute as consultas:
a) para saber se Pedro homem, basta fazer a consulta:
?- homem(pedro).
true
A resposta ser true, pois no conjunto universo existe um homem chamado Pedro. Isto , na base de fatos
e regras existe um fato homem(pedro).
b) para saber se existe pelo menos um homem, basta fazer a consulta:
?- homem(X).
X = pedro <pressione ENTER>
A resposta ser pedro, pois na base de fatos e regras o primeiro fato correspondente ao predicado
homem(x) homem(pedro).
c) para saber quais so os homens do conjunto universo, basta fazer a consulta:
?- homem(X).
X = pedro <pressione ;>
X = fbio <pressione ;>
X = jean
resultados
o que significa?
?- homem(joo).
?- not(homem(joo)).
?- homem(paula).
?- mulher(paula).
?- homem(X), write(X), fail.
?- homem(X), write(X), nl, fail.
?- homem(fbio,X).
consulta
passo 4: edite o arquivo familia.pl e inclua os demais fatos correspondentes aos predicados homem(x) e mulher(x),
conforme formalizao da questo 5.1 da lista de exerccios n7. Cada vez que a base de dados for alterada,
necessrio carreg-la novamente.
ATIVIDADE 2: definir relao genitor(X,Y)
passo 1: execute as consultas:
a) para saber se Pedro genitor de Fbio, basta fazer a consulta:
?- genitor(pedro,fbio).
true
A resposta ser true, pois no conjunto universo Pedro genitor de Fbio. Isto , na base de fatos e regras
existe um fato genitor(pedro, fbio)
b) para saber quem so os genitores de Fbio, basta fazer a consulta:
?- genitor(P,fbio), genitor(M,fbio).
Pode-se obter como resposta P=M. Ento, deve-se reescrever a consulta da seguinte forma:
?- genitor(P,fbio), genitor(M,fbio), P\=M.
resultados
o que significa?
?- genitor(fbio,X).
?- genitor(pedro,X), genitor(X,jean).
?- genitor(paula,X), genitor(X,Y),
genitor(Y,cludia).
?- genitor(P,jean), genitor(M,jean),
homem(P), mulher(M).
consulta
passo 2: edite o arquivo familia.pl e inclua os demais fatos para genitor(X,Y), conforme formalizao da questo 5.2
da lista de exerccios n7. Cada vez que a base de dados for alterada, necessrio carreg-la novamente.
ATIVIDADE 3: definir regras
Para estabelecer a relao x pai de y, pode-se incluir uma regra na base de dados. Assim, a frmula da lgica de
predicados (x)((y)((genitor(x,y) homem(x)) pai(x, y))) equivalente seguinte regra PROLOG pai(X,Y) :genitor(X,Y), homem(X).
resultados
o que significa?
?- pai(mrio,sara).
consulta
resultados
o que significa?
?- me(joana).
passo 3: edite o arquivo familia.pl e inclua regras para as frmulas conforme formalizao da questo 5.3 da lista de
exerccios n7. Cada vez que a base de dados for alterada, necessrio carreg-la novamente.
passo 4: verifique se as frmulas esto corretas, testando-as.
ATIVIDADE 4: definir regras recursivas para as relaes de parentesco representadas na questo 5.4 da lista de
exerccios n7.
passo 1: edite o arquivo familia.pl e inclua as regras abaixo:
antepassado(X,Y):- genitor(X,Y).
antepassado(X,Y):- genitor(X,Z), antepassado(Z,Y).
A primeira regra define a relao antepassado direto, isto , para algum X, existe um Y, tal que se X for genitor
de Y, ento X antepassado de Y. J a segunda regra define a relao de antepassado indireto, isto , para
algum X, existe algum Y e existe algum Z, tal que se X for genitor de Z e Z for antepassado de Y, ento X
antepassado de Y.
passo 2: qual o resultado das seguintes consultas:
consulta
?- antepassado(mrio,jos).
resultados
o que significa?
?- antepassado(mrio,gabriel).
?- antepassado(mrio,cludia).
?- antepassado(mrio,patrcia).
consulta
passo 4: edite o arquivo familia.pl e inclua regras para definir a relao descendente(X,Y) x descendente de y,
usando a regra antepassado(X,Y) j definida. Cada vez que a base de dados for alterada, necessrio carreg-la
novamente.
passo 5: verifique se as regras esto corretas, testando-as.
passo 6: edite o arquivo familia.pl e inclua regras para definir a relao descendente(X,Y) x descendente de y,
sem usar a regra antepassado(X,Y) j definida. Cada vez que a base de dados for alterada, necessrio carreg-la
novamente.
passo 7: verifique se as regras esto corretas, testando-as.