240 likes | 335 Views
This guide explores logic programming, a type of programming based on mathematical logic, and delves into declarative languages, emphasizing syntax and semantics. Learn about formal logic, logic operators, and relations in logic programming languages like Prolog. Gain insights into variables, clauses, and databases in logic programs, and understand the history and fundamentals of Prolog. Discover how to declare facts, define rules, and make queries in Prolog programming.
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.