41
INTRODUÇÃO AO PROLOG Prof. Sérgio Souza Costa

Introdução ao Prolog

Embed Size (px)

Citation preview

Page 1: Introdução ao Prolog

INTRODUÇÃO AO PROLOGProf. Sérgio Souza Costa

Page 2: Introdução ao Prolog

Roteiro

1. Introdução2. Princípios3. Tutorial

Page 4: Introdução ao Prolog

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 26: Introdução ao Prolog

Tutorial• Acessem:

• http://swish.swi-prolog.org

Page 27: Introdução ao Prolog

Tutorial• Fatos:

• Cada fato exprime um relacionamento entre os objetos envolvidos.• Exemplos:

Predicados

Page 28: Introdução ao Prolog

Tutorial• Fatos:

ArgumentosARIDADE

Quantidade de objetos

Page 29: Introdução ao Prolog

Tutorial• Fatos:

Em um mesmo programa podemos ter um mesmo predicado com aridades diferentes.

EXEMPLOS

Page 30: Introdução ao Prolog

Tutorial• Fatos:

FATOS + REGRAS

Base de conhecimento

Define relações a partir de relações existentes.

Page 31: Introdução ao Prolog

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

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

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

Tutorial• Consultas:

• Exemplos:

Page 35: Introdução ao Prolog

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

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

Tutorial• Regras:• Exemplo - Grafo de relacionamento:

Page 38: Introdução ao Prolog

Tutorial• Regras:• Exemplo - Grafo de relacionamento (irmão):

Page 39: Introdução ao Prolog

Tutorial• Regras:• Exemplo - (irmão):

Page 40: Introdução ao Prolog

Tutorial• Regras:• Exemplo com disjunção:

A disjunção pode ser expressa, dividindo-se a regra: