SlideShare uma empresa Scribd logo
1 de 41
INTRODUÇÃO AO
PROLOG
Prof. Sérgio Souza Costa
Roteiro
1. Introdução
2. Princípios
3. 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 COLMERAUER
Computer scientist
About
Link: http://alain.colmerauer.free.fr/
The birth of Prolog
Link: Clique aqui.
Aspects of PROLOG History:
Logic Programming and Professional Dynamics
Link: 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ípios
Prolog é 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: Alguma
termo/sujeito: Casa
Có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
• Acessem:
• http://swish.swi-prolog.org
Tutorial
• Fatos:
• Cada fato exprime um relacionamento entre os objetos envolvidos.
• Exemplos:
Predicados
Tutorial
• Fatos:
Argumentos
ARIDADE
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:
Informativo
Algumas 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

Mais conteúdo relacionado

Mais procurados

Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonGiancarlo Silva
 
Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02thomasdacosta
 
Lógica e Matemática Computacional - Exercícios 02
Lógica e Matemática Computacional - Exercícios 02Lógica e Matemática Computacional - Exercícios 02
Lógica e Matemática Computacional - Exercícios 02thomasdacosta
 
Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03thomasdacosta
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica ProposicionalAdolfo Neto
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 
Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Pacc UAB
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Leinylson Fontinele
 

Mais procurados (20)

Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02
 
Algoritmos aproximativos
Algoritmos aproximativosAlgoritmos aproximativos
Algoritmos aproximativos
 
Lógica e Matemática Computacional - Exercícios 02
Lógica e Matemática Computacional - Exercícios 02Lógica e Matemática Computacional - Exercícios 02
Lógica e Matemática Computacional - Exercícios 02
 
Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03Lógica e Matemática Computacional - Exercícios 03
Lógica e Matemática Computacional - Exercícios 03
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Demonstrações
DemonstraçõesDemonstrações
Demonstrações
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Minicurso Prolog
Minicurso PrologMinicurso Prolog
Minicurso Prolog
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Linguagem C - Strings
Linguagem C - StringsLinguagem C - Strings
Linguagem C - Strings
 
Logica Proposicional
Logica ProposicionalLogica Proposicional
Logica Proposicional
 
Lógica do conceito
Lógica do conceitoLógica do conceito
Lógica do conceito
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2Aula 5 - Estruturas de seleção encadeada - parte 2
Aula 5 - Estruturas de seleção encadeada - parte 2
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 

Semelhante a INTRODUÇÃO AO PROLOG

Apresentação1 prolog trabalho phillipe
Apresentação1 prolog trabalho phillipeApresentação1 prolog trabalho phillipe
Apresentação1 prolog trabalho phillipePhillipe Eduardo
 
Introdução à Lógica de Predicados
Introdução à Lógica de PredicadosIntrodução à Lógica de Predicados
Introdução à Lógica de PredicadosHugo Souza
 
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanEquações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanRenan Gustavo
 
SlidesModulo03IIA.pdf
SlidesModulo03IIA.pdfSlidesModulo03IIA.pdf
SlidesModulo03IIA.pdfDeborah237501
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de ProgramaçãoAndré Agostinho
 
Noções de programação lógica
Noções de programação lógicaNoções de programação lógica
Noções de programação lógicaDemis Gomes
 
Introducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoIntroducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoMarcelo Rodrigues
 
Introdução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e PrologIntrodução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e Prologelliando dias
 
7-Prolog-Base (2).pdf
7-Prolog-Base (2).pdf7-Prolog-Base (2).pdf
7-Prolog-Base (2).pdfSofiaPiteira
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Introdução á lógica
Introdução á lógicaIntrodução á lógica
Introdução á lógicaIhane Soares
 
Paulohenrique raciocinio-completo-026
Paulohenrique raciocinio-completo-026Paulohenrique raciocinio-completo-026
Paulohenrique raciocinio-completo-026macielneto
 

Semelhante a INTRODUÇÃO AO PROLOG (20)

Programacao logica
Programacao logicaProgramacao logica
Programacao logica
 
Apresentação1 prolog trabalho phillipe
Apresentação1 prolog trabalho phillipeApresentação1 prolog trabalho phillipe
Apresentação1 prolog trabalho phillipe
 
Introdução à Lógica de Predicados
Introdução à Lógica de PredicadosIntrodução à Lógica de Predicados
Introdução à Lógica de Predicados
 
Oz
OzOz
Oz
 
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenanEquações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
Equações Algébricas e Transcendentes - Isolamento de Raízes - @professorenan
 
Aula Prolog 02
Aula Prolog 02Aula Prolog 02
Aula Prolog 02
 
Aula3 sintaxe semantica
Aula3 sintaxe semanticaAula3 sintaxe semantica
Aula3 sintaxe semantica
 
SlidesModulo03IIA.pdf
SlidesModulo03IIA.pdfSlidesModulo03IIA.pdf
SlidesModulo03IIA.pdf
 
Seminário Prolog
Seminário PrologSeminário Prolog
Seminário Prolog
 
Programação de computadores
Programação de computadoresProgramação de computadores
Programação de computadores
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Noções de programação lógica
Noções de programação lógicaNoções de programação lógica
Noções de programação lógica
 
Introducao a Lógica de Programação
Introducao a Lógica de ProgramaçãoIntroducao a Lógica de Programação
Introducao a Lógica de Programação
 
Introdução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e PrologIntrodução a Programação em Lógica e Prolog
Introdução a Programação em Lógica e Prolog
 
28-aula28.pdf
28-aula28.pdf28-aula28.pdf
28-aula28.pdf
 
7-Prolog-Base (2).pdf
7-Prolog-Base (2).pdf7-Prolog-Base (2).pdf
7-Prolog-Base (2).pdf
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Programação aula002
Programação aula002Programação aula002
Programação aula002
 
Introdução á lógica
Introdução á lógicaIntrodução á lógica
Introdução á lógica
 
Paulohenrique raciocinio-completo-026
Paulohenrique raciocinio-completo-026Paulohenrique raciocinio-completo-026
Paulohenrique raciocinio-completo-026
 

Mais de Sérgio Souza Costa

De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosSérgio Souza Costa
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosSérgio Souza Costa
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaSérgio Souza Costa
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoSérgio Souza Costa
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theoremsSérgio Souza Costa
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsSérgio Souza Costa
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosSérgio Souza Costa
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Sérgio Souza Costa
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)Sérgio Souza Costa
 
Explorando Games para o Ensino do Pensamento Computacional
Explorando Games para o Ensino do Pensamento ComputacionalExplorando Games para o Ensino do Pensamento Computacional
Explorando Games para o Ensino do Pensamento ComputacionalSérgio Souza Costa
 

Mais de Sérgio Souza Costa (20)

De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficos
 
Modelagem de dados geográficos
Modelagem de dados geográficosModelagem de dados geográficos
Modelagem de dados geográficos
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de abertura
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - Introdução
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theorems
 
Turing e o problema da decisão
Turing e o problema da decisãoTuring e o problema da decisão
Turing e o problema da decisão
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cells
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetos
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)
 
Herança e Encapsulamento
Herança e EncapsulamentoHerança e Encapsulamento
Herança e Encapsulamento
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Contextualizando o moodle
Contextualizando o moodleContextualizando o moodle
Contextualizando o moodle
 
Explorando Games para o Ensino do Pensamento Computacional
Explorando Games para o Ensino do Pensamento ComputacionalExplorando Games para o Ensino do Pensamento Computacional
Explorando Games para o Ensino do Pensamento Computacional
 
Software
SoftwareSoftware
Software
 

INTRODUÇÃO AO PROLOG

  • 3. 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
  • 4. 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 COLMERAUER Computer scientist About Link: http://alain.colmerauer.free.fr/ The birth of Prolog Link: Clique aqui. Aspects of PROLOG History: Logic Programming and Professional Dynamics Link: Clique aqui.
  • 5. Introdução • Online: http://swish.swi-prolog.org • Instalação: • SWI-Prolog: • É uma IDE para desenvolvimento (Free). • Download: • Link: http://www.swi-prolog.org/
  • 6. 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.
  • 7. Introdução • Aplicações: • Tratamento de linguagem natural; • Banco de dados; • Automação de projetos; • Sistemas especialistas; • Entre outros.
  • 8. 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
  • 9. Princípios Prolog é baseada em um subconjunto da linguagem do cálculo de predicados, linguagem das cláusulas de Horn.
  • 10. 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.
  • 11. 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 ?
  • 12. Princípios • Estrutura geral da proposição, segundo Aristóteles: A casa é branca. Quantificador: Alguma termo/sujeito: Casa Cópula: é termo/predicado: Branca
  • 13. 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.
  • 14. 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 …
  • 15. 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
  • 16. 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)
  • 17. 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 )
  • 18. 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.
  • 19. 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,
  • 20. 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,
  • 21. 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,
  • 22. 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(.)
  • 23. 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.
  • 24. 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.
  • 25. 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?
  • 27. Tutorial • Fatos: • Cada fato exprime um relacionamento entre os objetos envolvidos. • Exemplos: Predicados
  • 29. Tutorial • Fatos: Em um mesmo programa podemos ter um mesmo predicado com aridades diferentes. EXEMPLOS
  • 30. Tutorial • Fatos: FATOS + REGRAS Base de conhecimento Define relações a partir de relações existentes.
  • 31. Tutorial • Consultas: • É uma pergunta sobre os fatos da base de dados. • Em Prolog, a pergunta é similar sintaticamente aos fatos. • Exemplos: Informativo Algumas vezes será possível encontrar: :- ao invés de: ?-
  • 32. 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.
  • 33. 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.
  • 35. 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).
  • 36. 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.
  • 37. Tutorial • Regras: • Exemplo - Grafo de relacionamento:
  • 38. Tutorial • Regras: • Exemplo - Grafo de relacionamento (irmão):
  • 40. Tutorial • Regras: • Exemplo com disjunção: A disjunção pode ser expressa, dividindo-se a regra:
  • 41. Todas as familias: Atividade (game of thrones): Escrever as regras no link abaixo: http://swish.swi- prolog.org/p/WKPvOLZI.pl