Introdução ao Prolog
-
Upload
sergio-souza-costa -
Category
Technology
-
view
243 -
download
0
Transcript of Introdução ao Prolog
INTRODUÇÃO AO PROLOGProf. Sérgio Souza Costa
Roteiro
1. Introdução2. Princípios3. Tutorial
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
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.
Introdução• Online: http://swish.swi-prolog.org• Instalação:
• SWI-Prolog:• É uma IDE para desenvolvimento (Free).
• Download:• Link: http://www.swi-prolog.org/
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.
Introdução• Aplicações:
• Tratamento de linguagem natural;• Banco de dados;• Automação de projetos;• Sistemas especialistas;• Entre outros.
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
PrincípiosProlog é baseada em um subconjunto da linguagem do cálculo de
predicados, linguagem das cláusulas de Horn.
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.
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 ?
Princípios• Estrutura geral da proposição, segundo Aristóteles:
A casa é branca.
Quantificador: Algumatermo/sujeito: CasaCópula:
étermo/predicado: Branca
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.
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 …
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
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)
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 )
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.
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,
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,
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,
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(.)
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.
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.
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?
Tutorial• Fatos:
• Cada fato exprime um relacionamento entre os objetos envolvidos.• Exemplos:
Predicados
Tutorial• Fatos:
ArgumentosARIDADE
Quantidade de objetos
Tutorial• Fatos:
Em um mesmo programa podemos ter um mesmo predicado com aridades diferentes.
EXEMPLOS
Tutorial• Fatos:
FATOS + REGRAS
Base de conhecimento
Define relações a partir de relações existentes.
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:
?-
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.
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.
Tutorial• Consultas:
• Exemplos:
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).
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.
Tutorial• Regras:• Exemplo - Grafo de relacionamento:
Tutorial• Regras:• Exemplo - Grafo de relacionamento (irmão):
Tutorial• Regras:• Exemplo - (irmão):
Tutorial• Regras:• Exemplo com disjunção:
A disjunção pode ser expressa, dividindo-se a regra:
Todas as familias:
Atividade (game of thrones):
Escrever as regras no link abaixo:
http://swish.swi-prolog.org/p/WKPvOLZI.pl