Introdução ao Prolog
-
Upload
sergio-souza-costa -
Category
Technology
-
view
245 -
download
0
Transcript of Introdução ao Prolog
![Page 1: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/1.jpg)
INTRODUÇÃO AO PROLOGProf. Sérgio Souza Costa
![Page 2: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/2.jpg)
Roteiro
1. Introdução2. Princípios3. Tutorial
![Page 3: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/3.jpg)
Introdução• Um pequeno artigo fácil de ler e destaco os elementos
apresentados nesse seminário:• http://www.ime.usp.br/~slago/IA-Prolog.pdf
![Page 4: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/4.jpg)
Introdução• Prolog:
• Linguagem declarativa baseado nos princípios da lógica;• Utilizada na Inteligência Artificial;• Focada na especificação do conhecimento;• Desenvolvida em 1972 por Alain Colmerauer e Philippe Roussel.
ALAIN COLMERAUERComputer scientist
AboutLink: http://alain.colmerauer.free.fr/
The birth of PrologLink: Clique aqui.
Aspects of PROLOG History: Logic Programming and Professional DynamicsLink: Clique aqui.
![Page 5: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/5.jpg)
Introdução• Online: http://swish.swi-prolog.org• Instalação:
• SWI-Prolog:• É uma IDE para desenvolvimento (Free).
• Download:• Link: http://www.swi-prolog.org/
![Page 6: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/6.jpg)
Introdução• Histórico:
• Ideia:• Desenvolver uma linguagem de programação baseada em lógica.
• Início de aplicações industriais (1981);• O primeiro compilador (1982);• Em 1992, a definição de normas ISO para Prolog.
![Page 7: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/7.jpg)
Introdução• Aplicações:
• Tratamento de linguagem natural;• Banco de dados;• Automação de projetos;• Sistemas especialistas;• Entre outros.
![Page 8: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/8.jpg)
Princípios• Características:
• Especificação da solução em termos de relações entre entidades;• Descreve o universo do problema;• Lógica matemática;• Um conjunto de afirmações.
NÃO é uma descrição da solução do problema
Problema Um conjunto de perguntas sobre os objetos do universo da aplicação
![Page 9: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/9.jpg)
PrincípiosProlog é baseada em um subconjunto da linguagem do cálculo de
predicados, linguagem das cláusulas de Horn.
![Page 10: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/10.jpg)
Princípios• Sujeito apreende no intelecto o conceito de objeto (ex:
casa, branca).• Os conceitos são ligados, e formam juízos (ex: a casa é
branca).• Os conceitos são externalizados como termos, e os juizos
como proposições.
![Page 11: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/11.jpg)
Princípios• Sujeito apreende no intelecto o conceito de objeto (ex:
casa, branca).• Os conceitos são ligados, e formam juízos (ex: a casa é
branca).• Os conceitos são externalizados como termos, e os juizos
como proposições.• Mas qual a estrutura geral da proposição ?
![Page 12: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/12.jpg)
Princípios• Estrutura geral da proposição, segundo Aristóteles:
A casa é branca.
Quantificador: Algumatermo/sujeito: CasaCópula:
étermo/predicado: Branca
![Page 13: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/13.jpg)
Princípios• Estrutura geral da proposição, segundo Frege:
• Uma proposição é estrutura abstrata composta por função e argumento (nota: conceito matemático)
• Deslocou a atenção da distinção sujeito-predicado para a distinção função-argumento.
![Page 14: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/14.jpg)
Princípios• Uma função em matemática é uma generalização de uma
expressão, ou seja, é uma expressão que contêm um espaço vazio.• ... + 2• A ... é branca• A casa e …• ... gosta …
![Page 15: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/15.jpg)
Princípios• Uma função em matemática é uma generalização de uma
expressão, ou seja, é uma expressão que contêm um espaço vazio.• ... + 2, X + 2• A ... é branca, X é branca• A casa e …, A casa é X• ... gosta …, X gosta de Y
![Page 16: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/16.jpg)
Princípios• Uma função em matemática é uma generalização de uma
expressão, ou seja, é uma expressão que contêm um espaço vazio.• ... + 2, X + 2, f(x) = x + 2• A ... é branca, X é branca, branca(X)• A casa e …, A casa é X, casa(X).• ... gosta …, X gosta de Y, gosta(X,Y)
![Page 17: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/17.jpg)
Princípios• Exemplo de implicações:
• Todos os homens são mortais.• Todo A tem a propriedade B• Qualquer que seja X, se X tem a propriedade A, então X tem a
propriedade B.• Ou, ∨x (Ax -> Bx )
![Page 18: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/18.jpg)
Introdução
• O motivo disso é simplesmente destacar a conclusão da implicação. • q é a cabeça e p é o corpo da implicação
• Em Prolog escrevemos uma implicação do tipo q ← p, é escrita como q :- p.• Todo programa em Prolog é só isso
Em cláusula Horn, podemos escrever uma implicação do tipo p → q de maneira inversa, ou seja,
q ← p.
![Page 19: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/19.jpg)
Assertion and Clause• A simple assertion has the form r(T1, . . . , Tm) where r is
an m-ary relation, and where T1, . . . , Tm are terms (expressions), possibly containing variables.
• A clause (or just clause) has the form:A0 if A1 and ... and An.
• Informally, this clause means that, if the assertions A1 , . . . , An are all true, then we can infer that the assertion A0 is also true.
• A fact is a special case of a Horn clause where n = 0: A0.
PROGRAMMING LANGUAGE. DESIGN CONCEPTS. David A. Watt,
![Page 20: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/20.jpg)
Assertion and Clause
• A PROLOG clause is a Horn clause written in one of the following forms:
A0. A0 :- A1, ..., An.
• The first of these is a fact. The second is read as ‘‘A0 succeeds if A1 succeeds and . . . and An succeeds’’.
PROGRAMMING LANGUAGE. DESIGN CONCEPTS. David A. Watt,
![Page 21: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/21.jpg)
Assertion and Clause
• A PROLOG clause may also contain the symbol ‘‘;’’, which means ‘‘or’’. For example:
A0 :- A1; A2, A3.
• is read as ‘‘A0 succeeds if either A1 succeeds or A2 succeeds and A3 succeeds’’. This is just an abbreviation for a pair of Horn clauses, ‘‘A0 :- A1.’’ and ‘‘A0 :- A2, A3.’’.
PROGRAMMING LANGUAGE. DESIGN CONCEPTS. David A. Watt,
![Page 22: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/22.jpg)
Assertion and Clause
irmao(X,Y) :- filho(X, H,M) , filho(Y,H,M) , Y \== X.
Cabeça, da clausula
Pescoço, equivale ao “if“ ou “se”.
Corpo da clausula.
Uma virgula (,) equivale ao operador “e” e um ponto e virgula (;) ao operador “ou”.
Pé da clausula(.)
![Page 23: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/23.jpg)
Assertion and Clause
irmao(X,Y) :- filho(X, H,M) , filho(Y,H,M) , Y \== X.
Cabeça, da clausula
Pescoço, equivale ao “if“ ou “se”.
Corpo da clausula.
Uma virgula (,) equivale ao operador “e” e um ponto e virgula (;) ao operador “ou”.
Pé da clausula(.)
ama(joao,maria).
Cabeça, da clausula
Regras são clausulas com corpo, e fatos são cláusulas sem corpo.
![Page 24: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/24.jpg)
Query• Computation consists of testing a given query Q, which in
its simplest form is just an assertion. If we can infer from the clauses of the program that Q is true, then we say that the query succeeds. If we cannot infer that Q is true, then we say that the query fails.
![Page 25: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/25.jpg)
Resumo• Fatos:
• Afirmações corretas sobre os objetos do universo da aplicação (verdades incondicionais).
• Exemplo: A prova de lógica é fácil.• Regras:
• Cláusulas com condicionais.• Exemplo: A prova de lógica é fácil se a turma estudar.
• Consultas:• Verificação de uma verdade.• A prova de logica é fácil ?• Qual prova é fácil?
![Page 27: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/27.jpg)
Tutorial• Fatos:
• Cada fato exprime um relacionamento entre os objetos envolvidos.• Exemplos:
Predicados
![Page 28: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/28.jpg)
Tutorial• Fatos:
ArgumentosARIDADE
Quantidade de objetos
![Page 29: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/29.jpg)
Tutorial• Fatos:
Em um mesmo programa podemos ter um mesmo predicado com aridades diferentes.
EXEMPLOS
![Page 30: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/30.jpg)
Tutorial• Fatos:
FATOS + REGRAS
Base de conhecimento
Define relações a partir de relações existentes.
![Page 31: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/31.jpg)
Tutorial• Consultas:
• É uma pergunta sobre os fatos da base de dados.• Em Prolog, a pergunta é similar sintaticamente aos fatos.
• Exemplos:
InformativoAlgumas vezes será possível encontrar:
:- ao invés de:
?-
![Page 32: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/32.jpg)
Tutorial• Consultas:
• Realiza um pattern matching entre a pergunta e os fatos (base de dados).
Objetivo - Prolog
V F
O F (false) deve ser entendido
como:Não é provável.
![Page 33: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/33.jpg)
Tutorial• Princípios da programação:
• Consultas:• Como responder: “Quem gosta de flores?”.• Uso de variáveis.
• Exemplo:
Procura (na base) todas as instâncias possíveis (os objetos) de X (True).
Letra maiúscula.
![Page 34: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/34.jpg)
Tutorial• Consultas:
• Exemplos:
![Page 35: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/35.jpg)
Tutorial• Consultas:
• Conjunção: combina objetivos na mesma pergunta.• É preciso separar os objetivos por uma vírgula (,).
• Exemplos:
Quem são os ‘Maranhenses’ que gostam de ‘flores’?
(Tenta satisfazer todos os objetivos, em ordem).
![Page 36: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/36.jpg)
Tutorial• Regras:
• É uma generalização das afirmações sobre os objetos do universo da aplicação.
• Permitem definir novas relações em termos de outras relações já existentes.
• Exemplo com conjunção:
Estabelece que X é avô de Y se X tem um filho Z que é pai de Y.
![Page 37: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/37.jpg)
Tutorial• Regras:• Exemplo - Grafo de relacionamento:
![Page 38: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/38.jpg)
Tutorial• Regras:• Exemplo - Grafo de relacionamento (irmão):
![Page 39: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/39.jpg)
Tutorial• Regras:• Exemplo - (irmão):
![Page 40: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/40.jpg)
Tutorial• Regras:• Exemplo com disjunção:
A disjunção pode ser expressa, dividindo-se a regra:
![Page 41: Introdução ao Prolog](https://reader036.fdocument.pub/reader036/viewer/2022062302/58a674091a28abb47e8b697f/html5/thumbnails/41.jpg)
Todas as familias:
Atividade (game of thrones):
Escrever as regras no link abaixo:
http://swish.swi-prolog.org/p/WKPvOLZI.pl