![Page 1: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/1.jpg)
Ensino Superior
7 – Introdução à Programação Lógica
Amintas Paiva Afonso
Lógica Matemática e Computacional
![Page 2: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/2.jpg)
SUMÁRIO
1. Lógica e Programação de Computadores
2. A Linguagem Prolog Fatos Consultas Regras Regra de Inferência: Resolução Exemplo de Programa e Consultas Recursão Principais Aplicações O Significado dos Programas Prolog
![Page 3: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/3.jpg)
Lógica e Programação de Computadores• Na lógica de predicados usamos regras de
inferência para demonstrar que uma tese é conseqüência de determinadas hipóteses
• Programação em Lógica e especificamente a linguagem Prolog – Progamming in Logic – também pode provar teses a partir de hipóteses
• A linguagem Prolog inclui: predicados, conectivos lógicos e regras de inferência - Princípio da Resolução
![Page 4: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/4.jpg)
Lógica e Programação de Computadores
• Prolog é uma linguagem declarativa ao invés de procedimental.
• Um programa Prolog consiste na declaração (ou descrição de uma interpretação) de hipóteses que são verdadeiras em uma interpretação.
![Page 5: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/5.jpg)
Lógica e Programação de Computadores
• O conjunto de declarações que forma um programa Prolog é chamada a base de dados (BD) desse programa.
• Para determinar se uma tese (consulta do usuário à BD) é ou não verdadeira, Prolog aplica suas regras de inferência na BD sem a necessidade de instruções adicionais por parte do programador.
![Page 6: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/6.jpg)
Lógica e Programação de Computadores• BD convencionais descrevem apenas
fatos.“Oscar é um avestruz”
• As sentenças de um Programa em Lógica, além de descrever fatos, permite a descrição de regras.“Todo avestruz é um ave”
• Havendo regras, novos fatos podem ser deduzidos.“Oscar é uma ave”
![Page 7: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/7.jpg)
Lógica e Programação de Computadores
• Ponto focal da programação em lógica: identificar computação com dedução – a
execução de um programa limita-se à pesquisa da refutação das sentenças do programa (BD) mais a negação da sentença consulta - “uma refutação é a dedução de uma contradição”
![Page 8: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/8.jpg)
Lógica e Programação de Computadores
• As sentenças de um programa prolog são expressas por cláusulas.
• Tipos de cláusulas: fatos e regras Fato: declaração de uma verdade
incondicional Regra: condição que deve ser
satisfeita para que um declaração seja considerada verdadeira
![Page 9: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/9.jpg)
A Linguagem Prolog
• Programar em Prolog consiste em: Declarar alguns fatos sobre objetos e
suas relações. Definir algumas regras sobre objetos e
suas relações. Fazer consultas sobre objetos e suas
relações.
![Page 10: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/10.jpg)
A Linguagem PrologFATOS
• Os fatos permitem definir os predicados:- Exemplo: um sistema ecológico para especificar a cadeia alimentar
come (urso, peixe)come (urso, raposa) % predicado bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado unárioanimal (raposa)
![Page 11: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/11.jpg)
A Linguagem PrologCONSULTAS
• De posse do programa Prolog (base de dados, podemos fazer consultas .
Exemplos: ? come (cavalo, mato) Resposta: yes
? come (urso, coelho) Resposta: no
? come (urso, X) Resposta: peixe
coelho
![Page 12: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/12.jpg)
A Linguagem PrologREGRAS
• Uma regra é a descrição de um predicado através de uma implicação
Exemplo: “um animal é presa se é comido Exemplo: “um animal é presa se é comido por outro animal”.por outro animal”.
come(Y,X) ^ animal(X) -> come(Y,X) ^ animal(X) -> presa(X) presa(X)
em Prolog:em Prolog:
presa(X) :- come(Y,X), presa(X) :- come(Y,X), animal(X) animal(X)
![Page 13: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/13.jpg)
A Linguagem PrologREGRAS e CONSULTAS
• Acrescentando a nova regra à BD podemos fazer novo tipo de consulta
come (urso, peixe)come (urso, raposa) % predicado
bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado
unárioanimal (raposa)
presa(X) :- come(Y,X), animal(X) presa(X) :- come(Y,X), animal(X) % regra
?-presa(x) resposta: peixe e raposa
![Page 14: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/14.jpg)
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
• As regras e os fatos de um programa prolog correspondem à fórmulas de 1a ordem transformada em Cláusulas de Horn.
• Prolog trata as regras como sendo quantificadas universalmente.
• A regra de inferência usada pelo interpretador prolog é a regra da resolução.Como foi obtida a resposta do exemplo anterior?
![Page 15: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/15.jpg)
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
• Observe que a regraObserve que a regra (Cláusula de Horn) (Cláusula de Horn)
presa(X) :- come(Y,X), animal(X)presa(X) :- come(Y,X), animal(X)
CorrespondeCorresponde a wff a wffxxy(come(Y,X) ^ animal(X)) -> presa(X)y(come(Y,X) ^ animal(X)) -> presa(X)
CorrespondeCorresponde a cláusula a cláusula~(come(X,Y) ^ animal(X)) v presa(x) ~(come(X,Y) ^ animal(X)) v presa(x) ~come(X,Y) v ~animal(X) v presa(x)~come(X,Y) v ~animal(X) v presa(x)
![Page 16: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/16.jpg)
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
• Regra da resolução: Duas cláusulas de Horn são resolvidas em uma nova cláusula se uma delas contiver um predicado negado que corresponda a um predicado não-negado na outra cláusula. A nova cláusula elimina o termo de correspondência e fica disponível para uso em resposta a pergunta.As variáveis são substituídas por constantes associadas de maneira consistente.
![Page 17: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/17.jpg)
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
• ? presa(X)
O Prolog procura, na BD, por uma regra com o predicado presa(X) como o conseqüente
BBusca outras cláusulas que possam ser resolvidas com a regra Faz as substituições das variáveis na cláusula regraFaz as substituições das variáveis na cláusula regra
1. ~come(X,Y) v ~animal(X) v presa(X) ~come(X,Y) v ~animal(X) v presa(X) 2. come(urso,peixe)2. come(urso,peixe)3. ~animal(peixe) v presa(peixe) 3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2}{resolvente de 1 e 2}4. animal (peixe)4. animal (peixe)5. presa (peixe)5. presa (peixe) {resolvente de 3 e 4}{resolvente de 3 e 4}
Refaz o processo procurando na BD outra cláusula a resolver Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra.com a cláusula da regra.Encontrará come(urso,peixe)Encontrará come(urso,peixe)
![Page 18: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/18.jpg)
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
• Outro exemplo: acrescentando à BD a regra: “x é caçado se é presa”caçado(X) :- presa(X)
Como é feita a consulta que segue? ? caçado(X)
a regra na forma simbólica é:presa(X) -> caçado(X)
a cláusula correspondente é:~(presa(X) v caçado(X)
essa cláusula é resolvida com a da regra de definição de presa e seguindo a resolução obtém as respostas:
peixe raposa
![Page 19: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/19.jpg)
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
come (urso, peixe)come (peixe,peixinho)come (peixinho,alga)come (quati,peixe)come(urso,quati)come (urso, raposa)come(raposa,coelho)come (coelho, mato)come(urso,cavalo)come(cavalo,mato)come(gato-selvagem,cavalo)
animal(urso)animal(peixe)animal(peixinho)
animal(quati)animal(raposa)animal(coelho) animal(cavalo)animal(gato-selvagem)
planta(mato)planta(alga)
presa(X) :- come(Y,X), presa(X) :- come(Y,X),
animal(X)animal(X)
![Page 20: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/20.jpg)
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
• Consultas e respostas:
? animal(coelho)yes
? come(gato-selvagem,mato)no
? come(X,peixe)ursoquati
? come(X,Y),planta(Y)peixinho algacoelho matocavalo mato
![Page 21: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/21.jpg)
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
• Consultas e respostas (continuação):
? presa(X)peixe
peixinhopeixequatiraposacoelhocavalocavalo
![Page 22: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/22.jpg)
A Linguagem PrologRECURSÃO
• As regras em Prolog são implicações lógicas Podem depender de fatos:
presa(X) :- come(X,Y),animal(X) Podem depender de outras regras:
caçado(X) :- presa(X) Podem depender da própria regra:
com definição recursiva
![Page 23: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/23.jpg)
A Linguagem PrologRECURSÃO
• Exemplo: usar a BD ecológica para definir a relação na-cadeia-alimentar(X,Y)
com o significado: ”Y está na cadeia alimentar de X”
que por sua vez pode significar duas coisas:1. X come Y diretamente2. X come algum animal que come algum animal
que come algum animal ... que come Y
![Page 24: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/24.jpg)
A Linguagem PrologRECURSÃO (exemplo)
• O caso 2. pode ser reescrito como:2’. “X come Z e Y está na cadeia alimentar de Z”
• O caso 1. é o ponto de parada da regra recursiva
• A regra incorpora os casos 1 e 2’:na_cadeia_alimentar(X,Y) :- come(X,Y)
na_cadeia_alimentar(X,Y) :- come(X,Z),
na_cadeia_alimentar(Z,Y)
![Page 25: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/25.jpg)
A Linguagem PrologRECURSÃO (exemplo)
? na_cadeia_alimentar(urso,Y)
resposta:1. peixe2. quati3. raposa4. cavalo5. peixinho6. alga7. peixe8. peixinho9. alga10. coelho11. mato12. mato
![Page 26: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/26.jpg)
A Linguagem PrologRECURSÃO (exemplo)
urso peixeurso quatiurso raposaurso cavalourso peixe
peixe peixinho
peixinho alga
![Page 27: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/27.jpg)
A Linguagem PrologPRINCIPAIS APLICAÇÕES DA LINGUAGEM
• Sistemas Baseados em Conhecimentos
• Sistemas de Base de Dados
• Sistemas especialistas
• Processamento de Linguagem Natural
• Educação
• Modelagem de arquiteturas não convencionais
![Page 28: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/28.jpg)
A Linguagem PrologO SIGNIFICADO DOS PROGRAMAS PROLOG
• Um programa Prolog possui três interpretações semânticas básicas: Interpretação declarativa.
Entende-se que as cláusulas que definem um programa descrevem uma teoria de primeira ordem.
Interpretação procedimental.As cláusulas são vistas como entrada para um método de prova.
Interpretação operacional.As cláusulas são vistas como comandos para um procedimento particular de prova por refutação.
![Page 29: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/29.jpg)
A Linguagem PrologO SIGNIFICADO DOS PROGRAMAS PROLOG
• Proveito das alternativas semânticas: Declarativa: Permite a modelagem do
problema simplificando a tarefa de programação
Procedimental: Permite que o programador identifique e descreva o problema em subproblemas através de uma série de chamadas a procedimentos
Operacional: Permite controle da execução através da ordenação das cláusulas e objetivos
![Page 30: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/30.jpg)
A Linguagem PrologO SIGNIFICADO DOS PROGRAMAS PROLOG
• Proveito das alternativas semânticas:
O programador deve se concentrar no significado declarativo. Em problemas de maior complexidade os aspectos operacionais não podem ser ignorados
![Page 31: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/31.jpg)
A Linguagem PrologO SIGNIFICADO DOS PROGRAMAS PROLOG
• Bibliografia Judith L. Gersting: Fundamentos
Matemáticos para a Ciência da Computação, LTC Editora, 3a edição, 1995.
Luiz A. M. Palazzo: Introdução à Programação PROLOG, Editora da Universidade Católica de Pelotas/UCPEL - Pelotas
![Page 32: Ensino Superior 7 – Introdução à Programação Lógica Amintas Paiva Afonso Lógica Matemática e Computacional](https://reader036.vdocuments.mx/reader036/viewer/2022070310/552fc0fd497959413d8ba7fb/html5/thumbnails/32.jpg)