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

álgebra de boole
álgebra de booleálgebra de boole
álgebra de booleBetzi Lira
 
Exprsaõ logicas e tabela verdade exercicios
Exprsaõ logicas e tabela verdade exerciciosExprsaõ logicas e tabela verdade exercicios
Exprsaõ logicas e tabela verdade exerciciosJoãopedro Machado
 
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
 
04 eac proj vest mat módulo 1 função logarítmica
04 eac proj vest mat módulo 1 função logarítmica04 eac proj vest mat módulo 1 função logarítmica
04 eac proj vest mat módulo 1 função logarítmicacon_seguir
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosMauro Pereira
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++profjr
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01thomasdacosta
 
Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisJorge Ávila Miranda
 
Árvores Balanceadas AVL
Árvores Balanceadas AVLÁrvores Balanceadas AVL
Árvores Balanceadas AVLDaniel Maia
 
Arquitetura e Montagem de Computadores.pdf
Arquitetura e Montagem de Computadores.pdfArquitetura e Montagem de Computadores.pdf
Arquitetura e Montagem de Computadores.pdfOs Fantasmas !
 

Mais procurados (20)

álgebra de boole
álgebra de booleálgebra de boole
álgebra de boole
 
Exprsaõ logicas e tabela verdade exercicios
Exprsaõ logicas e tabela verdade exerciciosExprsaõ logicas e tabela verdade exercicios
Exprsaõ logicas e tabela verdade exercicios
 
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
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
04 eac proj vest mat módulo 1 função logarítmica
04 eac proj vest mat módulo 1 função logarítmica04 eac proj vest mat módulo 1 função logarítmica
04 eac proj vest mat módulo 1 função logarítmica
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Algoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registrosAlgoritmos e lp parte 4-vetores matrizes e registros
Algoritmos e lp parte 4-vetores matrizes e registros
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Aula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionaisAula02 - Sistemas Numéricos computacionais
Aula02 - Sistemas Numéricos computacionais
 
Árvores Balanceadas AVL
Árvores Balanceadas AVLÁrvores Balanceadas AVL
Árvores Balanceadas AVL
 
Combinação simples
Combinação simplesCombinação simples
Combinação simples
 
Arquitetura e Montagem de Computadores.pdf
Arquitetura e Montagem de Computadores.pdfArquitetura e Montagem de Computadores.pdf
Arquitetura e Montagem de Computadores.pdf
 

Semelhante a INTRODUÇÃO AO PROLOG

Introdução ao Prolog - Prof. Sérgio S. Costa
Introdução ao Prolog - Prof. Sérgio S. CostaIntrodução ao Prolog - Prof. Sérgio S. Costa
Introdução ao Prolog - Prof. Sérgio S. CostaLeinylson Fontinele
 
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
 
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
 

Semelhante a INTRODUÇÃO AO PROLOG (20)

Introdução ao Prolog - Prof. Sérgio S. Costa
Introdução ao Prolog - Prof. Sérgio S. CostaIntrodução ao Prolog - Prof. Sérgio S. Costa
Introdução ao Prolog - Prof. Sérgio S. Costa
 
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
 
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
 
Minicurso Prolog
Minicurso PrologMinicurso Prolog
Minicurso 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
 

Mais de Sérgio Souza Costa

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasSé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
 

Mais de Sérgio Souza Costa (20)

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicas
 
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
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 
Contextualizando o moodle
Contextualizando o moodleContextualizando o moodle
Contextualizando o moodle
 

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