450 likes | 526 Views
Linguagens Lógicas Alunos: Emico Ferreira Santana Silas Silva Santos. Conceitos de Linguagem de Programação. ● Expressa programas na forma de lógica simbólica; ● Um processo de inferência lógica é usado para produzir os resultados;
E N D
Linguagens Lógicas Alunos: Emico Ferreira SantanaSilas Silva Santos Conceitos deLinguagem de Programação
● Expressa programas na forma de lógica simbólica; • ● Um processo de inferência lógica é usado para produzir os resultados; • – Não são declarados os procedimentos para determinar os resultados; • – Declarados as especificações dos resultados desejados; • ● Programas declarativos; Abordagem:
● Proposição: • – Declaração lógica que pode ou não ser verdadeira; • – Consiste em objetos e relações entre si; • ● Lógica Formal: • – Desenvolvida para fornecer um método para descrever • proposições; • – Buscando que essas proposições formalmente declaradas fossem verificadas quanto a validade; • – Relação entre lógica formal e a matemática; • ● Axiomas fundamentais da teoria dos números e dos conjuntos são o conjunto inicial de proposições presumidas como verdadeiras; Introdução ao Calculo de Predicados:
● Lógica Simbólica: • – Pode ser utilizada para as necessidades básicas da lógica formal: • ● Expressar proposições; • ● Expressar relações entre proposições; • ● Descrever como novas proposições podem ser inferidas de outras que se presumem verdadeiras; • – Calculo de predicados: • ● Forma particular de lógica simbólica usada para a programação lógica; Introdução ao Calculo de Predicados:
● Os objetivos de proposições de programação lógica são apresentados por termos simples, constantes ou variáveis; • – Constante: • ● É um símbolo que representa um objeto; • – Variável: • ● É um símbolo que pode representar diferentes objetos em diferentes tempos; • – No sentido matemático; Proposições:
● Proposições atômicas: • – Proposições simples; • – Constituído de termos compostos; • ● Elemento de uma relação matemática; • – Aparência de uma função matemática; • – Termo composto e formado por duas partes: • ● Functor: • – Símbolo de função que nomeia a relação; • ● Lista ordenada de parâmetros: • – 1-tupla: termo composto com um único parâmetro; • – 2-tupla: termo composto com dois parâmetros; Proposições:
●Proposições: • ● Exemplo: • – homem( jack) • ● 1-tupla na relação chamada homem; • – gosta( bob, bife ) • ● 2-tupla na relação chamada gosta; • – Se adicionar homem( fred ), a relação homem terá dois elementos distintos; • – Todos os termos simples dessas proposições são constantes e sem nenhuma semântica intrínseca; • ● homem, jack, gosta, bob, bife e fred; Proposições:
●Proposições: • ● Declarado de duas maneiras: • – Proposição definida como verdadeira; • – A verdade da proposição precisa ser determinado; • ● Ou seja: • – Podem ser declarados como fatos ou consultas; • ● Proposições compostas: • – Tem duas ou mais proposições atômicas, ligadas por conectores lógicos ou operadores; • ● Da mesma maneira que expressões logicas compostas são construídas em linguagens imperativas; Proposições:
●Proposições: • ● Nomes, símbolos e significados dos conectores lógicos do calculo de predicado sao os seguintes: • – Negação (¬): ¬a (não a); • – Conjunção (∩): a∩b(a e b); • – Disjunção(∪): a∪b(a ou b); • – Equivalência (≡): a≡b(a e equivalente a b); • – Implicação: • ● (⊃): a⊃b(a implica b); • ● (⊂): a ⊂ b (b implica a); Proposições:
●Proposições Compostas: • ● ¬ : precedência mais elevada; • ● ∩, e ∪ ≡ tem precedência maior que ⊃ e ⊂; • ● Exemplo: • – a ∩¬ b ⊃ d ; • ● ( a ∩ ( ¬ b ) ) ⊃ d ; Proposições:
●Proposições (Variáveis): • ● Variáveis podem aparecer em proposições, mas somente quando introduzidas por símbolos especiais, os quantificadores; • ● Dois quantificadores no calculo de predicado: • – Sendo X uma variável e P uma proposição; • – Universal: ∀ X P • ● Para todo X, P e verdadeiro; • – Existencial: ∃ X . P • ● Existe um valor de X tal que P seja verdadeiro; • ● Ponto (.), simplesmente separa a variável da proposição; Proposições:
●Proposições (Variáveis): • ● Exemplo: • – ∀ X . ( mulher( X ) ⊃ humano( X )) • ● Significa que para qualquer valor de X, se X for uma mulher, X e 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); Proposições:
●O escopo dos quantificadores universais e • existenciais são as proposições atômicas as • quais eles são anexados; • ● Pode ser estendido utilizando parênteses; • ● Os quantificadores universais e existenciais tem precedência mais elevada do que qualquer um dos operadores; Proposições:
● Calculo de Predicados: • – É a base para as linguagens de programação logica; • ● Minimizar redundâncias; • – Problema do calculo de Predicados: • ● Existem muitas maneiras diferentes de declarar proposições com o mesmo significado; • – Muita redundância; • ● Não constitui um problema para logica; • – Mas o calculo de predicado será um serio problema para sistemas automatizados; • ● Forma Clausal: • – Forma padrão, relativamente simples, de proposições; • ● Sem perda de generalidade; Forma Clausal :
●Forma Clausal: • ● Sintaxe de uma proposição na Forma Clausal: • – B1 U B2 U … U Bn ⊂ A1 ∩ A2 ∩ … ∩ An • ● Sendo os As e Bs termos; • – Significado: • ● Se todos os As forem verdadeiros, pelo menos um B será verdadeiro; • – Características: • ● Quantificadores existenciais não são necessários; • ● Quantificadores universais ficam implícitos no uso de variáveis nas proposições atômicas; • ● Nenhum outro operador além de conjunção e disjunção é necessário; • ● Ordem da clausal geral: • – Disjunção no lado esquerdo e a conjunção no lado direito; Forma Clausal :
●Forma Clausal: • ● Antecedente: • – É o lado direito de uma proposição • ● Consequente: • – Consequência da verdade de seu antecedente; • ● Exemplos: • – gosta( bob, truta ) ⊂ gosta(bob, peixe ) ∩ peixe( truta ) • ● “Se bob gosta de peixe e truta e um peixe, então bob gosta de truta”; • – pai( louis, alan) U pai ( louis, violet ) ⊂ pai( alan, bob ) ∩ mae( violet, bob ) ∩ avo( louis, bob ) • ● “Se alane pai de bob e violet e mãe de bob e louis e avo de bob, então louise pai de alanou de violet”; Forma Clausal :
●Calculo de Predicados e Demonstração de Teoremas: • ● Calculo de Predicados oferece um método para expressar coleções de preposições; • – Um uso das coleções de preposições édeterminar se quaisquer fatos interessantes ou uteis podem ser inferidos a partir das mesmas; • – Processo semelhante ao dos matemáticos, que buscam descobrir novos teoremas que possam ser inferidos a partir de axiomas e de teoremas conhecidos; Calculo de Predicados e Demonstração de Teoremas :
● Resolução: • – Èuma regra de inferência; • ● Permite a computação de preposições inferidas a partir de proposições dadas; • ● Constitui assim, um método potencial na demonstração automática de teoremas; • – Idealizada para ser aplicada a proposições na forma clausal; Calculo de Predicados e Demonstração de Teoremas :
●Conceito de resolução: • ● Supondo duas proposições com as formas: • – P1 ⊂ P2 • ● P2 implica em P1; • – Q1 ⊂ Q2 • ● Q2 implica em Q1; • – Supondo ainda que P1 seja idêntico a Q2, de modo que seja possível renomear P1 e Q2 como T; • ● T ⊂ P2 • ● Q1 ⊂ T • – Assim: • ● Q1 ⊂ P2 • – O Processo de inferir tal proposição a partir de duas proposições originais é uma resolução; Conceito de resolução :
●Conceito de resolução: • ● Exemplo: • – Considerando duas proposições: • ● mais_velho( joanne, jake ) ⊂ mae( joanne, jake ) • ● mais_sabio( joanne, jake ) ⊂ mais_velho( joanne, jake ) • – Proposição usando resolução: • ● mais_sabio( joanne, jake ) ⊂ mae( joanne, jake ) • – Construção da resolução: • ● Os termos do lado esquerdo das duas proposições são unidos por um E para formar o lado esquerdo da nova proposição; • – Mesmo processo para o lado direito; • ● O termo que aparece em ambos os lados da nova proposição e removido; Conceito de resolução :
●Conceito de resolução: • ● Exemplo: • – Considerando duas proposições: • ● pai( bob, jake ) U mae( bob, jake ) ⊂ pais( bob, jake ) • – Se: bob é um dos pais de jake, isto implica que bob é ou o pai ou a mãe de jake; • ● avo( bob, fred ) ⊂ pai( bob, jake ) ∩ pai( jake, fred ) • – E: bob é pai de jake e jakeé pai de fred, isto implica que bob é avô de fred; • – Proposição usando resolução: • ● pai( bob, jake), é a proposição atômica que permitiu a operação; • ● mae( bob, jake ) U avo( bob, fred ) ⊂ pais( bob, jake ) ∩ pai( jake, fred ) • – Entao: • ● Se: bob é um dos pais de jake e jakeé o pai de fred, então ou bob é mãe de jake ou bob é avô de fred; Conceito de resolução :
●Conceito de resolução: • ● Os conceitos, em geral são mais complexos que os exemplos; • – Principalmente com variáveis em proposições; • ● A resolução precisa determinar os valores para essas variáveis para que o processo de comparação possa ocorrer; • ● Unificação: • – Processo de determinar valores uteis; • ● Instanciação: • – Atribuição temporária de valores a variáveis para permitir a unificação; Conceito de resolução :
●Conceito de resolução: • ● Capacidade de detectar inconsistência em um conjunto de dado de proposição: • – Essa propriedade permite que a resolução seja usada para demonstrar teoremas: • ● Prova pela contradição: • – Método de prova indireta, não-construtiva; • – Assumindo-se como verdade o contrario do que queremos provar e então chegando-se a uma contradição. • ● Hipóteses: • – Proposições originais; • ● Meta: • – A negação do teorema; Conceito de resolução :
●Conceito de resolução: • ● Demonstração de teoremas e a base da programação logica; • – Lista de fatos dados; • – Relações como hipóteses; • – Meta a ser inferida a partir das hipóteses; • ● Utilizado a resolução; • ● Quando proposições são usadas para resolução, somente um tipo restrito de forma clausal pode ser ativado; • – Simplifica o processo de resolução; Conceito de resolução :
●Cláusulas de Horn: • ● Tipos especiais de proposições; • ● Podem estar em somente duas formas: • – Uma única proposição atômica no lado esquerdo; • – Ou, lado esquerdo vazio; • ● Cláusulas de Horn encabeçadas: • – Uma única proposição atômica no lado esquerdo; • ● Declaração de relações; • – gosta( bob, truta ) ⊂ gosta( bob, peixe ) ∩ peixe( truta ) • ● Cláusulas de Horn sem-cabeça: • – Lado esquerdo vazio; • ● Declaração de fatos; • – pai( bob, jake ) Cláusulas de Horn :
●Cláusulas de Horn: • ● Se a condição expressa pelo corpo da clausula: • – progenitor (X, Y) - é verdadeira então, segue como consequência logica que a cabeça - filho(Y, X) - também o é; • – Por outro lado, se não for possível demonstrar que o corpo da cláusula éverdadeiro, o mesmo irá se aplicar à cabeça. Cláusulas de Horn :
●“Logic Programming”; • ● Programação Baseada em Lógica éuma forma de implementar computações que coincidem com provas de teoremas; • – Se P então Q; • ● onde P e Q denotam declarações; • – Podem ser verdade ou falsa, mas não ambas; • ● A declaração P é a hipótese do teorema; • ● Enquanto que Q é a conclusão; • ● Possibilita dupla interpretação dos passos de computação que ocorrem durante a execução de um programa; • – Permitem que as especificações lógico-formais de certos problemas sejam também os próprios programas executáveis que resolvem aqueles problemas; Programação Baseada em Lógica
●Inspirada na observação que provar um teorema lógico • “sem criatividade” é um processo intelectual bastante • semelhante a acompanhar a execução de um programa • imperativo passo a passo, obedecendo as regras de • inferência determinadas para a logica em uso: • ● E partindo de um conjunto de expressões fornecidas (conjunto de axiomas); • ● Novas expressões são geradas até que uma expressão alvo seja obtida (um teorema); • ● Ou alternativamente que a impossibilidade de gerar aquela expressão alvo seja estabelecida (teorema foi refutado); Logic Programming :
●Expressão: • ● Tanto as expressões fornecidas originalmente, como as expressões geradas durante o processo de busca do teorema (ou impossibilidade), podem em geral ser particularizadas; • ● Exemplo: • – Dedução que “Sócrates é mortal”, com base nas premissas: • ● “Sócrates é um homem e todo homem é mortal”; • ● “se Sócrates é homem, ele também émortal”; • – “Sócrates éhomem” fornece “Sócrates é mortal”; LogicProgramming:
●Particularização: • ● Forma de passar parâmetros entre sentenças; • ● “todo homem é mortal”; • – “se X éhomem ele também émortal”; • ● Sendo X uma variável; • ● “Sócrates éhomem”; • ● Forneceu o valor “Sócrates” a variável X; LogicProgramming:
●História: • ● Artigo de 1965 de J. A. Robinson; • – Apresenta resultados teóricos que possibilitaram a construção de linguagens de programação baseadas em particularização de sentenças e prova de teoremas; • ● Primeira metade dos anos de 1970: • – Primeiras implementações Prolog; História :
●Historia: • ● Anos 1980 – Projeto de Quinta Geração: • – Objetivo principal: • ● Era o desenvolvimento de hardware e software de alto desempenho, caracterizando uma nova geração de computadores; • – Maquinas PSI (“Personal Sequential Inference machines”); • – Paradigma básico; • ● Atingiram maturidade teórico e pratico; • – Desenvolvido no Japão; Historia :
●Características: • ● Linguagem Declarativa: • – Descrição do problema que se pretende computar; • – Base de Dados: • ● Coleção de fatos; • – Relações Logicas (regras): • ● Domínio relacional do problema; Características :
●A Relação: • ● Basicamente, nada existe na mente humana sem relação; • – Não podemos conceber a existência de um objeto no mundo que não tenha uma relação no tempo e no espaço; • ● Tudo é relação; • ● A relação entre os objetos é que os define no mundo • – Exemplo: • ● Dois irmãos existem por ter pais em comum; • ● Sem a relação de paternidade a definição irmãos não existiria; A Relação :
●A Relação: • ● A Classificação e A Seriação: • – Elementos fundamentais para a evolução cognitiva do homem, a classificação e a seriação permitem o agrupamento para discernimento e a organização hierárquica dos elementos do mundo; • ● Exemplo: • – Analisar o comportamento desde o nascimento: • ● Inicialmente os bebes possuem movimentos de reflexos, que são repetidos durante meses ate o momento em que são combinados entre si e outros elementos sensoriais; • ● Isto dá ínicioao sistema cíclico de aprendizado; • ● Uma vez portadora deste sistema, a criança pode distinguir os objetos ao seu redor classificando-os e atribuindo a eles relações de hierarquia; • – A classificação e a seriação funcionam paralelamente; A Relação :
●A Relação: • ●É necessário que tenhamos estes conceitos de relações na Linguagem Prolog; • – Sendo que, através desta linguagem de programação, iremos representar o mundo através de relações; • – A Linguagem de programação Prolog, que significa programação em lógica, não ébaseada no sequenciamento de procedimentos, mas na definição de relações, na forma com a qual se representa o mundo que se quer implementar no computador; A Relação :
● Implementação mais popular dos conceitos de • programação em lógica; • ● Alguns recursos: • – Representação e manipulação de negação explicita nas • clausulas; • – Funções e predicados predefinidos para a aritmética de • números inteiros e de ponto flutuante; • – Operadores meta-lógicospara controlar regras de • escolha utilizada; • – Recursos, semelhantes, de Entrada/Saída de dados; Linguagem Prolog :
● Conversão usual entre logica de notação e • linguagem de programação: • – Conectivo ← pelos caracteres :- • – Conectivo ^ pela virgula (,) • – Terminar cada clausula com um ponto (.) • – Todas as variáveis iniciam com letra maiúscula; Linguagem Prolog :
● Especificações são Programas: • – A linguagem de especificação éentendida pela máquina e é, por si só, uma linguagem de programação; • ● Naturalmente, o refinamento de especificações émais efetivo do que o refinamento de programas; • ● Um número ilimitado de cláusulas diferentes pode ser usado e predicados (procedimentos) com qualquer numero de argumentos são possíveis; • ● Não ha distinção entre o programa e os dados; • ● As cláusulas podem ser usadas com grande vantagem sobre as construções convencionais para a representação de tipos abstratos de dados; • ● A adequação da lógica para a representação simultânea de programas e suas especificações a torna um instrumento especialmente útil para o desenvolvimento de ambientes e protótipos; Linguagem Prolog :
● Capacidade Dedutiva: • – O conceito de computação confunde-se com o de (passo de) inferência; • – A execução de um programa é a prova do teorema • representado pela consulta formulada, com base nos • axiomas representados pelas cláusulas (fatos e regras) do programa; Linguagem Prolog :
● Não-determinismo: • – Os procedimentos podem apresentar múltiplas • respostas, da mesma forma que podem solucionar • múltiplas e aleatoriamente variáveis condições de • entrada; • – Através de um mecanismo especial, denominado • "backtracking", uma sequencia de resultados alternativos pode ser obtida; Linguagem Prolog :
● Reversibilidade das Relações: • – Ou "computação bidirecional"; • – Os argumentos de um procedimento podem alternativamente, em diferentes chamadas representar ora parâmetros de entrada, ora de saída; • ● Os procedimentos podem assim ser projetados para atender a múltiplos propósitos; • – A execução pode ocorrer em qualquer sentido, dependendo do contexto; • ● Por exemplo, o mesmo procedimento para inserir um elemento no topo de uma pilha qualquer pode ser usado, em sentido contrario, para remover o elemento que se encontrar no topo desta pilha; Linguagem Prolog :
● Tríplice Interpretação dos Programas em Logica: • – Um programa em logica pode ser semanticamente • interpretado de três modos distintos: • ● (1) por meio da semântica declarativa, inerente à lógica; • ● (2) por meio da semântica procedimental, onde as cláusulas dos programas são vistas como entrada para um método de prova; • ● (3) por meio da semântica operacional, onde as cláusulas são • vistas como comandos para um procedimento particular de • prova por refutação; • – Essas três interpretações são intercambiáveis segundo a • particular abordagem que se mostrar mais vantajosa ao • problema que se tenta solucionar; Linguagem Prolog :
● Recursão: • – Forma natural de ver e representar dados e programas; • ● Entretanto, na sintaxe da linguagem não ha laços do tipo "for" ou • "while": • – Podem ser programados; • – São desnecessários; • – Não usam comandos de atribuição; • ● Uma estrutura de dados contendo variáveis livres pode ser retornada • como a saída de um procedimento: • – Essas variáveis livres podem ser posteriormente instanciadas por • outros procedimentos produzindo o efeito de atribuições implícitas a • estruturas de dados; • ● Variáveis livres são automaticamente agrupadas por meio de • referências transparentes ao programador; Linguagem Prolog :
● Vantagens: • – É de aprendizado muito mais fácil e natural do que as linguagens • procedimentais convencionais, podendo inclusive ser ministrada a • estudantes entre o final do primeiro e o inicio do segundo grau com grande • aproveitamento; • – Implementa com precisão todos os novos modelos surgidos nos últimos • anos, inclusive redes neurais, algoritmos genéticos, sociedades de agentes • inteligentes, sistemas concorrentes e paralelos; • – Permite a implementação de extensões, inclusive em nível meta, e a • definição precisa de sistemas reflexivos (essenciais, por exemplo, a • robótica); • – Libera o programador dos problemas associados ao controle de suas • rotinas, permitindo-lhe concentrar-se nos aspectos lógicos da situação a • representar. Linguagem Prolog :