2013 – luiz mauricio nascimento silva graduando em ciência da computação uesc – universidade...
TRANSCRIPT
![Page 1: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/1.jpg)
Linguagens lógicas2013 – Luiz Mauricio Nascimento SilvaGraduando em Ciência da Computação
UESC – Universidade Estadual de Santa Cruz
![Page 2: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/2.jpg)
Introdução a L.P lógicaProgramação lógica é um tipo de programação a qual
utiliza uso de lógica matemática em sua essência. As linguagens de programação lógicas ou linguagens
declarativas, são bem diferentes das outras tanto a sua semântica qual a sua sintaxe.
Por exemplo na programação imperativa, nós descrevemos um procedimento para que assim sair um resultado a partir dele, na lógica, nós descrevemos o resultado para assim obte-lô.
![Page 3: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/3.jpg)
Introdução a L.P lógicaProgramar em uma LP lógica consiste em:
Declarar fatos primitivos sobre um domínio; Definir regras que expressam relações entre os fatos de
um domínio; Fazer perguntas sobre um domínio. O processo de dedução através do qual encontram-se
respostas às perguntas é executado automaticamente pelo sistema
![Page 4: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/4.jpg)
exemplo1.Galinhas botam ovos. 2.Mamíferos não botam ovos. 3.Vacas são mamíferos. 4.Vacas botão ovos? Não 5.Quem bota ovos? Galinhas
![Page 5: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/5.jpg)
Lógica Formal A lógica formal foi desenvolvida para fornecer um
método para descrever proposições, e verificar quanto a sua validade.
Uma proposição pode ser imaginada como uma declaração lógica que pode ou não ser verdadeira .
A lógica simbólica pode ser usada para as três necessidades básicas da lógica formal:
1 - expressar proposições.
2 - expressar as relações entre elas.
3 - descrever como novas proposições podem ser inferidas de outras que se presumem verdadeiras.
![Page 6: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/6.jpg)
Operadores lógicos
![Page 7: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/7.jpg)
Variáveis Variáveis podem aparecer em proposições, mas somente
quando introduzidas por símbolos especiais, os quantificadores;
Universal: X P∀Sendo X uma variável e P uma proposição;
Para todo X, P e verdadeiro; Existencial: ∃ X P
Sendo X uma variável e P uma proposição;
Existe um valor de X tal que P seja verdadeiro; Ponto (.), simplesmente separa a variável da proposição;
![Page 8: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/8.jpg)
Variáveis ∀ X . ( mulher( X ) → humano( X ))
Significa que para qualquer valor de X, se X for uma mulher, X é humano;
∃ X . ( mãe( mary, X ) → homem( X ))
Significa que existe um valor de X tal que mary e mãe de X e X e um homem (mary tem um filho);
![Page 9: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/9.jpg)
CláusulasExistem 2 tipos de clausulas. Fatos e regras:
Fatos: declaração de uma verdade incondicional.
Ex: José gosta de Maria
gosta(José, Maria)
gosta(Maria, José)
Nas expressões acima gostar é o predicado do fato, representando uma relação entre os argumentos
![Page 10: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/10.jpg)
CláusulasRegra: condição que deve ser satisfeita para que um
declaração seja considerada verdadeira.
A declaração de regras (axiomas) em LPs lógicas segue um padrão conhecido como cláusulas de Horn:
H←A1,A2,..., An , se todos os Ai são verdadeiros, então H é verdadeiro.
![Page 11: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/11.jpg)
cláusulasNa expressão acima, H é denominado a cabeça da
cláusula e A1,A2,..., An é o seu corpo. Através de regras pode-se estabelecer relações entre fatos.
Ex:
pai(pedro, ana):- mãe(maria,ana), casada(maria, pedro).
Pedro é pai de Ana, se Maria for mãe de Ana e Maria for casada com Pedro.
![Page 12: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/12.jpg)
Banco de Dados
O conjunto de fatos e relações contidos em um programa lógico é denominado banco de dados, e representa o conhecimento sobre um ou mais domínios.
O objetivo de um programa lógico é inferir e validar novos fatos ou relações a partir do banco de dados.
![Page 13: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/13.jpg)
Historia do prologO nome Prolog para a linguagem concreta foi escolhido
por Philippe Rousseal como uma abreviação de “Programmation Logique”.
Foi criada em meados de 1972 por Alain Colmerauer e Philippe Rousseal, baseados no conceito de Robert Kowalski da interpretação procedimental das cláusulas de Horn.
Ainda hoje é a mais popular e principal LP lógica.
![Page 14: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/14.jpg)
PrologProgramar 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 15: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/15.jpg)
PrologFatos em Prolog são representados através
de átomos ou estruturas. Átomos são strings que começam sempre
com letra minúscula: Ex:caro. diamante. maria.
![Page 16: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/16.jpg)
Estruturas em PrologEstruturas são átomos seguidos de uma lista de
argumentos entre parênteses:
pred (arg1, arg2, ..., argN).
onde:
arg1, arg2, ...,argN – são os argumentos
N - número de argumentos
(.) - final sintático de qualquer cláusula Prolog
![Page 17: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/17.jpg)
Estruturas em PrologOs argumentos de uma estrutura podem ser
átomos, estruturas, variáveis e números. Exemplos: limpo(sapato). casado(X, Y). arvore_bin(valor1, arvore_bin(valor2,
valor3)). valor(30).
![Page 18: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/18.jpg)
VariáveisEm LPs imperativas variáveis são instanciadas através de
operações explícitas de atribuição.Em LPs lógicas variáveis geralmente são instanciadas
implicitamente pelo sistema durante o processo de resolução.
São usadas basicamente para extrair informações do banco de dados, e para expressar relações entre fatos.
Variáveis em Prolog são representadas por strings que começam com uma letra maiúscula.
![Page 19: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/19.jpg)
VariáveisEX:
pai(joao,joaquim). pai(joaquim,manuel). avo(X,Y):- pai(X,Z),pai(Z,Y). ?-avo(joao,Z). Z=manuel
![Page 20: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/20.jpg)
UnificaçãoPara tentar provar um fato Prolog precisa
estabelecer a equivalência entre fatos. Dois fatos equivalentes são ditos unificáveis. Dois átomos são unificáveis apenas se são
idênticos. Duas estruturas são unificáveis se o seu
predicado é idêntico, e se seus argumentos são unificáveis .
![Page 21: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/21.jpg)
UnificaçãoUma variável é unificável a qualquer coisa. O símbolo = em prolog representa unificação Ex:
fruta(manga).
?-fruta(X).
X = manga; X foi unificada com “manga”
![Page 22: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/22.jpg)
Regras em prologUma regra é a descrição de um predicado através de uma
implicação Ex: “um animal é presa se é comido por outro animal”.
come(Y,X) ^ animal(X) -> presa(X)
em Prolog:
presa(X) :- come(Y,X), animal(X)
![Page 23: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/23.jpg)
ConjunçõesConjunções permitem a especificação de questões com
múltiplas condições que devem ser satisfeitas simultaneamente.
Conjunções são representadas por uma vírgula ( , ). Exemplo:
comida(carne).
gostoso(carne).
?- localizacao(X,cozinha):- comida(X), gostoso(X).
Existe alguma comida gostosa na cozinha?
X= carne.
![Page 24: 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz](https://reader036.vdocuments.pub/reader036/viewer/2022081518/552fc153497959413d8e3dec/html5/thumbnails/24.jpg)
DisjunçãoDisjunções permitem a especificação de questões com
múltiplas condições na qual ao menos uma delas deve ser satisfeita.
Disjunções são representadas por um ponto-e-vírgula ( ; ) Ex:
inverno(X):- nevando(X); gelado(X).
É inverno se está nevando ou está gelado.