Monitoria de Lógica para Computação – EC Slides baseados em slides antigos da monitoria e nos slides utilizados pela professora em sala de aula. Mini prova 1 Lógica aristotélica. Validade x Consistência Algum A é B Nenhum H é B -------------------------Nenhum A é H Todo A é B. Nenhum C é B. y é C. y é A. O argumento é valido ? O conjunto de sentenças é consistente ? Validade Primeiro vamos saber o que é um argumento... Um argumento é uma sequência de sentenças. Mas não uma sequência qualquer. Essas sentenças precisam ter uma relação entre si (silogismo). Uma delas é chamada de conclusão (tese) e as demais são as justificativas que garantem a conclusão, que chamamos de premissa. Validade Quando um argumento é válido? Um argumento é válido se toda situação que torne as premissas verdadeiras torne também a conclusão verdadeira. Ou, de outro modo, um argumento é válido se não existe situação que torne as premissas verdadeiras e a conclusão falsa. Toda vez que as premissas forem falsas ou tiverem uma contradição, o argumento será válido. (P1 ^ P2 ^ P3 ^ ... ^ Pn ) -> C Validade Ex.: Todo P é M. Algum S é M. ----------------Algum S é P. O argumento é válido? Opa! Há ao menos um caso em que nenhum S é P! Ou seja, há ao menos um caso em que as premissas são verdadeiras e a conclusão, falsa. P=M S=M P S S=M=P S S =M P M S M M S M S P=M P=M P M S ... P=M S Validade O argumento da questão anterior é válido? Não! Pois há ao menos um caso em que as premissas são verdadeiras e a conclusão é falsa! Agora que encontramos esse caso, não precisamos mostrar as demais possibilidades. Obs.: No caso de um argumento válido, é necessário mostrar que em todos os casos em que as premissas são verdadeiras, a conclusão também é! Consistência Quando um conjunto de sentenças é consistente? Um conjunto de sentenças em lógica proposicional é dito consistente se houver um conjunto de valoresverdade para as proposições tal que todas as sentenças sejam verdadeiras simultaneamente. Consistência Ou seja, usando o diagrama de venn, basta que encontremos um caso em que todas as sentenças sejam verdadeiras simultaneamente. Você pode perceber que para um conjunto de sentenças inconsistentes, é impossível achar um caso valido, ou seja, no conjunto de sentenças há algum tipo de contradição, implícita ou explicita. Consistência Opa! Em todos os casos é impossível que todas as 4 sentenças sejam verdadeiras simultaneamente! Ex.: Todo A é B. Nenhum C é B. y é C. y é A. OBconjunto de sentenças é consistente? C B A=B A C A=B y B y A C y y Consistência O conjunto de sentenças anterior é consistente? Não! Pois em todos os casos possíveis, não existe ao menos um caso em que as 4 sentenças sejam verdadeiras simultaneamente! Obs.: No caso de um conjunto de sentenças consistente, basta que encontremos um caso em que todas as sentenças sejam verdadeiras simultaneamente. Observação Se em um argumento as premissas formarem um conjunto inconsistente então o argumento será válido independentemente do que seja sua conclusão. Por quê? Vamos Analisar Se em um argumento as premissas formarem um conjunto inconsistente ...” Premissas inconsistentes? Ou seja, as premissas não podem ser verdadeiras simultaneamente! “... então o argumento será válido independentemente do que seja sua conclusão.” Argumento válido independentemente da conclusão? Sim, pois se não há caso em que as premissas sejam verdadeiras, então também não há caso em que as premissas são verdadeiras e a conclusão falsa! (P1 ^ P2 ^ ... ^ Pn ^ ¬Pn ) -> C ou seja zero -> qualquer coisa = Válido. Exemplificando João é professor. João não é professor. --------------------------Logo, a Lua é feita de queijo. Chamemos: João -> J Conjuntos dos professores -> P Lua -> L Conjunto das coisas feitas de queijo -> Q JéP J não é P -----------LéQ P P j Impossível ‘juntar’ as duas premissas! Logo, não há ao menos um caso em que as premissas sejam verdadeiras e a conclusão falsa! Portanto, o argumento é válido! j Paradoxo Exercícios Mini prova 2 Conjuntos Indutivos Fechos Indutivos Conjuntos Indutivos Seja A um conjunto e X um subconjunto de A (X ⊂ A). Considere F um conjunto de funções cada uma com sua aridade. Dizemos que um subconjunto Y de A (Y ⊆ A) é indutivo em relação à base X e a F se: 1. 2. Y contém a base X. (X ⊂ Y) Y é fechado sobre todas as funções de F. Y é um conjunto indutivo em relação a X e a F. F = { f1, f2, ... } A X Y Fecho Indutivo Como nós chegamos ao menor conjunto indutivo ? Há duas formas de chegarmos ao fecho indutivo: 1. De baixo para cima ( bottom-up ) 2. De cima para baixo ( top-down ) Fecho indutivo ( Bottom-up ) Sejam f e g funções de F e a, b e c elementos da base. f(_,_) g(_) f(a,b) f(b,a) f(a,c) f(c,a) ab c f(b,c) (...) f(c,b) g(a) g(b) g(c) f(a,f(a,b)) f(a,f(b,a)) f(a,f(a,c)) f(a,f(c,a)) f(a,f(b,c)) f(a,f(c,b)) f(a,g(a)) f(a,g(b)) f(a,g(c)) f(f(a,b),a) f(f(b,a),a) f(f(a,c),a) f(f(c,a),a) f(f(b,c),a) f(f(c,b),a) f(g(a),a) f(g(b),a) f(g(c),a) X+ f(b,f(a,b)) f(b,f(b,a)) f(b,f(a,c)) f(b,f(c,a)) f(b,f(b,c)) f(b,f(c,b)) f(b,g(a)) f(b,g(b)) f(b,g(c)) f(f(a,b),b) f(f(b,a),b) f(f(a,c),b) f(f(c,a),b) f(f(b,c),b) f(f(c,b),b) f(g(a),b) f(g(b),b) f(g(c),b) f(c,f(a,b)) f(c,f(b,a)) f(c,f(a,c)) f(c,f(c,a)) f(c,f(b,c)) f(c,f(c,b)) f(c,g(a)) f(c,g(b)) f(c,g(c)) f(f(a,b),c) f(f(b,a),c) f(f(a,c),c) f(f(c,a),c) f(f(b,c),c) f(f(c,b),c) f(g(a),c) f(g(b),c) f(g(c),c) f(f(a,b),f(a,b)) f(f(a,b),f(b,a)) f(f(a,b),f(a,c)) f(f(a,b),f(c,a)) f(f(a,b),f(b,c)) f(f(a,b),f(c,b)) f(f(a,b),g(a)) f(f(a,b),g(b)) f(f(a,b),g(c)) f(f(b,a),f(a,b)) f(f(a,c),f(a,b)) f(f(c,a),f(a,b)) f(f(b,c),f(a,b)) f(f(c,b),f(a,b)) f(g(a),f(a,b)) f(g(b),f(a,b)) f(g(c),f(a,b)) f(f(b,a),f(b,a)) f(a,b) f(f(b,a),f(a,c)) f(f(b,a),f(c,a)) f(f(b,a),f(b,c)) f(f(b,a),f(c,b)) f(f(b,a),g(a)) f(f(b,a),g(b)) f(f(b,a),g(c)) f(f(a,c),f(b,a)) f(f(c,a),f(b,a)) f(f(b,c),f(b,a)) f(f(c,b),f(b,a)) f(g(a),f(b,a)) f(b,a) f(a,c) f(g(b),f(b,a)) f(g(c),f(b,a)) f(f(a,c),f(a,c)) f(f(a,c),f(c,a)) f(f(a,c),f(b,c)) f(c,a) ab f(f(a,c),f(c,b)) f(f(a,c),g(a)) f(f(a,c),g(b)) f(f(a,c),g(c)) f(f(c,a),f(a,c)) f(b,c) c f(f(b,c),f(a,c)) f(f(c,b),f(a,c)) f(g(a),f(a,c)) f(g(b),f(a,c)) f(g(c),f(a,c)) f(c,b) g(a) g(b) f(f(c,a),f(c,a)) f(f(c,a),f(b,c)) f(f(c,a),f(c,b)) f(f(c,a),g(a)) f(f(c,a),g(b)) g(c) f(f(c,a),g(c)) f(f(b,c),f(c,a)) f(f(c,b),f(c,a)) f(g(a),f(c,a)) f(g(b),f(c,a)) ... f(g(c),f(c,a)) f(f(b,c),f(b,c)) f(f(b,c),f(c,b)) f(f(b,c),g(a)) f(f(b,c),g(b)) f(f(b,c),g(c)) f(f(c,b),f(b,c)) f(g(a),f(b,c)) f(g(b),f(b,c)) f(g(c),f(b,c)) f(f(c,b),f(c,b)) f(f(c,b),g(a)) f(f(c,b),g(b)) f(f(c,b),g(c)) f(g(a),f(c,b)) f(g(b),f(c,b)) f(g(c),f(c,b)) f(g(a),g(a)) f(g(a),g(b)) f(g(a),g(c)) f(g(b),g(a)) f(g(c),g(a)) f(g(b),g(b)) f(g(b),g(c)) f(g(c),g(b)) f(g(c),g(c)) Fecho indutivo ( Bottom-up ) Uma definição mais formal... Vamos construir o fecho indutivo a partir da base: X0 X X n1 X n { f ( x1 , x2 ,..., xk )} Onde aridade (f) = k e x1, x2, ..., xk ∊ Xn e ∊ F Fecho Indutivo – Top-down Considere a família C de conjuntos indutivos em relação a X e F. Perceba que C não é vazia pois contém pelo menos A. Considere X+= ∩ C o conjunto formado pela intersecção de todos os conjuntos de C. Temos que X+ é o menor conjunto indutivo em relação a X e F (fecho indutivo) Conjuntos Livremente Gerados Definição: Sejam A e X conjuntos, X está contido em A, e seja F um conjunto de funções que recebem como parâmetro elementos de A: O fecho indutivo de X+ de X sob F será livremente gerado se e somente se: Todas as funções de F forem injetoras. Sejam f e g funções de F sobre X+, o conjunto imagem de f e g são disjuntos. Nenhum elemento da base X é resultado de aplicações de f sobre o fecho de X. Todo CLG tem a propriedade de leitura única, ou seja, só existe uma forma de, aplicando funções de F, se “chegar” a elementos do conjunto CLG. f(a,b) != g(a,b) != f(g(a),f(a,b)) !=(...) Exercícios 1. Dê uma definição indutiva para os conjuntos abaixo: a)Conjunto das cadeias binárias de tamanho par. b)Conjunto das cadeias binárias que têm a quantidade de 1’s maior que a quantidade de 0’s e os 0’s aparecem antes dos 1’s; 2) Usando conjuntos indutivos, construa o conjunto de todas as cadeias binárias palíndromas e de tamanho ímpar: a) Dê a base e as funções de geração desse conjunto: b) O conjunto gerado em a) é livremente gerado? c) Qual o menor conjunto indutivo ? d) Qual o maior conjunto indutivo que satisfaz a propriedade dita na questão? Mini prova 3 Tabela Verdade, recursão e provas por indução em conjuntos indutivos Tabela Verdade O que vocês precisam saber ? • • • • Satisfatível Insatisfatível Tautologia Refutável Como começar? • 2ⁿ número de linhas, onde n = número de variáveis • Estabelecer todas as possibilidades Quais as vantagens x desvantagens? • É simples (implementação + verificação) • É custoso (o tempo de resposta para verificar é longo) • É limitado (para fórmulas muito grandes, o método é exaustivo) Exercício y = ((((A→∼B)→C)→((∼D→(∼B v A))→C)) v A) y é Tautologia ? Indução sobre FBF • Por onde começar? • Defina as funções recursivas que está sendo pedida; • Faça isso para os três casos: • Atômico • Unário • Binário • Estabeleça as hipóteses de indução pros dois casos indutivos: • Unário tem uma hipótese de indução • Binário tem duas hipóteses de indução • Prove por indução estrutural. Exemplo 1) Mostre, por indução, que, para toda fórmula Φ da lógica proposicional, o numero de subexpressoes de Φ é no máximo igual a duas vezes o numero de operadores de Φ mais 1. (Obs.: Defina recursivamente as funções necessárias para a formalização do problema, e use indução para provar o enunciado.) Resolução 1. Para provar algo por indução, precisamos primeiramente definir as funções que estão sendo pedidas no problema. Elas são: o número de subexpressões e o número operadores. Seja S(x) o número de subexpressões de x, e C(x) o número de conectivos de x:. Para o caso atômico: S(x) = 1 C(x) = 0 Para o caso unário, onde x = ¬p (e p é uma fórmula qualquer) S(¬p) = 1 + S(p) C(¬p) = 1 + S(p) Continuação Para o caso binário, onde x = p#q, onde p e q são fórmulas quaisquer e # é um operador binário. S(p#q) = 1 + S(p) + S(q) - |S(p)∩ S(q)| C(p#q) = 1 + C(p) + C(q) Pronto, definimos as funções, qual o próximo passo ? Precisamos Agora definir nossas hipóteses de indução pro caso unário e binário: H.I pro unário: S(p) <= 2.C(p) + 1 H.I 1 pro binário: S(p) <= 2.C(p) + 1 H.I 2 pro binário: S(q) <= 2.C(q) + 1 (...) Caso binário: S(p#q) <= 2.C(p#q) + 1 Por definição: 1 + S(p) + S(q) - |S(p)∩ S(q)| <= 2. (1 + C(p) + C(q) ) + 1 S(p) + S(q) - |S(p)∩ S(q)| <= 2 + 2.C(p) + 2.C(q) S(p) + S(q) - |S(p)∩ S(q)| <= 2.C(p) + 1 + 2.C(q) + 1 -Como, por hipótese S(p)<= 2.C(p) + 1 e S(q) <= 2.C(q) + 1, então: S(p) + S(q) <= 2.C(p) + 1 + 2.C(q) + 1 também é verdade. -Porém |S(p)∩ S(q)| é sempre positivo, então, podemos subtrair algo positivo do termo menor, que ainda continuará sendo menor, então: S(p) + S(q) - |S(p)∩ S(q)| <= 2.C(p) + 1 + 2.C(q) + 1 Está provado por H.I. Continuação Agora, como último passo, iremos provas pros três casos: Caso atômico (base): S(p) <= 2.C(p) +1 Sendo que S(p) = 1 e C(p) = 0, pro Atômico logo: 1 <= 2.0 +1 [provado pela definição] Caso Unário: S(¬p) <= 2.C(¬p) +1 Por definição, temos: 1 + S(p) <= 2.( 1 + C(p) ) + 1 1+ S(p) <= 2 + 2.C(p) + 1 S(p) <= 2.C(p) + 1 + 1 Como, por hipótese temos que S(p) <= 2.C(p) + 1, então, se adicionarmos +1 ao termo da direita, ainda continuará sendo verdade. Então, provamos por H.I. Exercício Mostre, por indução, que, para toda fórmula Φ da lógica proposicional, o posto de Φ é no máximo igual ao número de operadores de Φ. (Obs.: Defina recursivamente as funções necessárias para a formalização do problema, e use indução para provar o enunciado.) Teorema da Extensão Homomórfica Única f g A h’(_) B X h(_) Mini Prova 4 Método dos Tableaux Analíticos, Resolução, Dedução Natural e Cálculo de Sequentes Consequência Lógica Dizemos que uma frase S é consequência lógica de um conjunto de frases T, desde que todas as atribuições de verdade que tornem as frases de T simultâneamente verdadeiras, também tornem S verdadeira. Vamos considerar o conjunto que tem como membros todas as frases de T mais a frase S, ou seja T {S}. Dizemos que a frase S é consequência lógica do conjunto T se e só se o conjunto T {S} é um conjunto logicamente falso, ou seja nunca pode ser satisfeito. “Ou seja, pra S ser consequencia Lógica de T, tudo que satisfazer T também tem que satisfazer S, então T {S} será sempre falso, pois falso e qualquer coisa é falso.” Tableaux Analíticos Estratégia : Montar uma “Árvore de Possibilidades”, onde cada caminho da raiz até uma folha caracteriza um “Mundo Possível” E pra isso iremos utilizar algumas regras… Tableaux Analíticos Regras: Tableaux Analíticos - Exercício {C → D, ¬(B v D), A → (B v C)}╞ ¬A ? Resolução O método da resolução é outra forma para verificarmos se uma sentença é consequência lógica de um conjunto de sentenças. Podemos definir um algoritmo pra utilizarmos esse método... Resolução Primeiro transforme as sentenças na forma: (T1 T2 .... Tn S) Depois transofme tudo isso na forma normal conjuntiva (FNC). Substituindo os símbolos lógicos “implica” e “se somente se”, e depois usando as leis de De Morgan e a propriedade distribuitiva. P->Q = ¬P v Q ¬(A ^ B) = (¬A v ¬B) (...) Ao ter uma conjunção de cláusulas, basta adicionarmos novas cláusulas que derivem da junção de duas cláusulas antigas. Ex: (¬r v a) ^ (r v b), gerará a v b. Faremos isso várias vezes, até esgotarmos as possibilidades ou chegarmos a uma cláusula vazia, teremos que todo o conjunto é vazio Resolução Como é uma conjunção de cláusulas, se uma for vazia, todas as outras serão, sendo então consequência lógica. Se não conseguir, não será consequência lógica. Já que não conseguimos refutar as cláusulas. Resolução Vantagens: Não é necessário o uso de equivalências para rearranjar p v q como q v p. Já que tudo é colocado na FNC antes da aplicação do método, e para o método a posição do átomo a ser eliminado é indiferente. Existe apenas uma regra de inferência para ser lembrada Fácil de ser mecanizado, porém em provas longas , é possível “andar em círculos” Linguagem Prolog está baseada no princípio da resolução aplicado a cláusulas de Horn, usando busca em profundidade. Resolução Cláusula de Horn: é uma disjunção que contém no máximo um literal positivo, sendo muito importante para a computação, nos ramos de IA, Teoria Lógica, Banco de Dados e Engenharia de Software. Ex.: ¬q v ¬t v p v ¬s v ¬z Resolução - Exercício {X v (Y ^ P), ¬(P ^ Q), ¬(X v Y) ^ (Q v S),¬X} |= S Dedução Natural Estratégia: Utilizar uma árvore de dedução através das regras de introdução e eliminação; Introdução dos Operadores Introdução do E (^): Introdução do OU (v) Introdução do Implica: Se supormos que A é verdade e através de derivações chegarmos em B, temos A→B; Introdução da Negação: Se supormos que A é verdade e através de derivações chegarmos em um absurdo, temos ¬A; Eliminação dos Operadores Eliminação do E: Se temos que A^B é verdade, então A é verdade e B é verdade; Eliminação do OU: Se temos que AvB é verdade, então um dos dois deve ser verdade. Então supomos os dois como verdade e dos dois, devemos obter o mesmo resultado; Eliminação dos Operadores Eliminação do Implica: Se temos que A→B é verdade, então se A for verdade, B também é. Então supomos A como verdade (se já soubermos que A é verdade, não precisa supor); Eliminação da Negação: Se temos ¬A como verdade, então forçamos um absurdo para eliminar a negação; Dedução Natural - Exercício Provar que: http://www.danielclemente.com/logica/dn.en.html Site com diversos exercícios de dedução Natural Cálculo de Sequentes Estratégia: analisar as hipóteses (esquerda) e suas proposições (direita) através de regras estruturais presentes no símbolo de derivação: Onde as hipóteses A são “negativas” e as proposições B são “positivas” Dualidade Importante: Regras Calculo de Sequentes - Exercício ⱶ A ˅ ¬A (A-> B), (C->D) ⱶ (A^C) -> (B^D