240 likes | 327 Views
Linguagens lógicas. 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz. Introdução a L.P lógica. Programação lógica é um tipo de programação a qual utiliza uso de lógica matemática em sua essência.
E N D
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva Graduando em Ciência da Computação UESC – Universidade Estadual de Santa Cruz
Introdução a L.P lógica • Programaçã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ô.
Introdução a L.P lógica Programar 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
exemplo • 1.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
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.
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;
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);
Cláusulas • Existem 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
Cláusulas • Regra: 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.
cláusulas • Na 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.
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.
Historia do prolog • O nome Prolog para a linguagem concreta foi escolhido por Philippe Rousseal como uma abreviação de “ProgrammationLogique”. • 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.
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
Prolog • Fatos 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.
Estruturas em Prolog • Estruturas 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
Estruturas em Prolog • Os 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).
Variáveis • Em 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.
Variáveis • EX: pai(joao,joaquim). pai(joaquim,manuel). avo(X,Y):- pai(X,Z),pai(Z,Y). ?-avo(joao,Z). Z=manuel
Unificação • Para 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 .
Unificação • Uma 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”
Regras em prolog • Uma 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)
Conjunções • Conjunçõ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.
Disjunção • Disjunçõ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.