320 likes | 601 Views
LÓGICA MATEMÁTICA. INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha. SUMÁRIO. Lógica e Programação de Computadores A Linguagem Prolog Fatos Consultas Regras Regra de Inferência: Resolução Exemplo de Programa e Consultas Recursão Principais Aplicações
E N D
LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
SUMÁRIO • Lógica e Programação de Computadores • 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
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
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
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
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”
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”
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
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
A Linguagem Prolog FATOS • Os fatos permitem definir os predicados: - Exemplo: um sistema ecológico para especificar a cadeia alimentar come (urso, peixe) come (urso, raposa) % predicado binário come (cavalo, mato) animal (urso) animal (peixe) % predicado unário animal (raposa)
A Linguagem Prolog CONSULTAS • 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
A Linguagem Prolog REGRAS • Uma regra é a descrição de um predicado através de uma implicação Exemplo: “um animal é presa se é comido por outro animal”. come(Y,X) ^ animal(X) -> presa(X) em Prolog: presa(X) :- come(Y,X), animal(X)
A Linguagem Prolog REGRAS e CONSULTAS • Acrescentando a nova regra à BD podemos fazer novo tipo de consulta come (urso, peixe) come (urso, raposa) % predicado binário come (cavalo, mato) animal (urso) animal (peixe) % predicado unário animal (raposa) presa(X) :- come(Y,X), animal(X) % regra ?-presa(x) resposta: peixe e raposa
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?
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO • Observe que a regra (Cláusula de Horn) presa(X) :- come(Y,X), animal(X) Corresponde a wff xy(come(Y,X) ^ animal(X)) -> presa(X) Corresponde a cláusula ~(come(X,Y) ^ animal(X)) v presa(x) ~come(X,Y) v ~animal(X) v presa(x)
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
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 • Busca outras cláusulas que possam ser resolvidas com a regra • Faz as substituições das variáveis na cláusula regra 1. ~come(X,Y) v ~animal(X) v presa(X) 2. come(urso,peixe) 3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2} 4. animal (peixe) 5. presa (peixe) {resolvente de 3 e 4} • Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra. Encontrará come(urso,peixe)
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
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), animal(X) A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS • Consultas e respostas: ? animal(coelho) yes ? come(gato-selvagem,mato) no ? come(X,peixe) urso quati ? come(X,Y),planta(Y) peixinho alga coelho mato cavalo mato
A Linguagem PrologEXEMPLO DE PROGRAMA E CONSULTAS • Consultas e respostas (continuação): ? presa(X) peixe peixinho peixe quati raposa coelho cavalo cavalo
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
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: • X come Y diretamente • X come algum animal que come algum animal que come algum animal ... que come Y
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)
A Linguagem PrologRECURSÃO (exemplo) ? na_cadeia_alimentar(urso,Y) resposta: • peixe • quati • raposa • cavalo • peixinho • alga • peixe • peixinho • alga • coelho • mato • mato
A Linguagem PrologRECURSÃO (exemplo) urso peixe urso quati urso raposa urso cavalo urso peixe peixe peixinho peixinho alga
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
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
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
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
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