Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lo´gica Computacional 1 Fla´vio L. C. de Moura 9 de Novembro de 2011 Calenda´rio de Aulas 1. 17.10.2011 - 2. 19.10.2011 - 3. 24.10.2011 - 4. 26.10.2011 - 5. 31.10.2011 - 6. 02.11.2011 - Feriado 7. 07.11.2011 - 8. 09.11.2011 - 9. 14.11.2011 - Na˜o havera´ aula 10. 16.11.2011 - 11. 21.11.2011 - 12. 23.11.2011 - 13. 28.11.2011 - 14. 30.11.2011 - 15. 05.12.2011 - 16. 07.12.2011 - 17. 12.12.2011 - 2 Cap´ıtulo 1 Induc¸a˜o Matema´tica O princ´ıpio de induc¸a˜o nos permite provar propriedades sobre os nu´meros naturais. Como exemplo provaremos que 1 + 2 + . . .+ n = n(n+ 1) 2 (1.1) Conta-se que uma professora de matema´tica, na tentativa de obter sileˆncio na classe e ocupar seus alunos, propoˆs que os mesmos calculassem o resultado da soma dos nu´meros naturais de 1 a 100. Entre seus alunos estava o (futuro) famoso matema´tico alema˜o Karl Friedrich Gauss (1777- 1855) com enta˜o 8 anos de idade, que resolveu o problema em poucos segundos! Como Gauss fez isto? Sera´ que ele conhecia a fo´rmula acima? Observe o seguinte padra˜o: 1 + 2 + 3 + . . . + 98 + 99 + 100 100 + 99 + 98 + . . . + 3 + 2 + 1 101 + 101 + 101 + . . . + 101 + 101 + 101 Assim temos 100 parcelas iguais a 101, ou seja, o resultado da soma e´ igual a 100 ∗ 101 2 = 5050 ja´ que a soma desejada esta´ sendo computada duas vezes. Enta˜o, para n = 100, a equac¸a˜o (1.1) e´ verdadeira. Como garantir que esta equac¸a˜o e´ sempre verdadeira? Ou seja, como garantir que a equac¸a˜o (1.1) e´ correta para qualquer natural n? Resposta: com o princ´ıpio de induc¸a˜o matema´tica. Para provar que uma propriedade M sobre os naturais e´ va´lida precisamos de duas coisas: 1. Base da Induc¸a˜o (BI): O nu´mero 0 satisfaz a propriedade, isto e´, precisamos de uma prova de M(0); 2. Passo Indutivo (PI): Assumindo que o natural n satisfac¸a a propriedadeM podemos provar que n+ 1 tambe´m satisfaz a propriedade, isto e´, temos uma prova de M(n)→M(n+ 1). Este princ´ıpio e´ tambe´m conhecido com o princ´ıpio da induc¸a˜o finita. O Princ´ıpio da Induc¸a˜o Finita: Primeira Forma Formalmente definimos o princ´ıpio de induc¸a˜o da seguinte forma: Definic¸a˜o 1. Seja P (n) uma propriedade associada aos nu´meros naturais. Em outras palavras, P e´ um predicado una´rio cujo argumento e´ um nu´mero natural, e suponhamos que: 3 (a) Base da Induc¸a˜o (BI): P (0) e´ verdadeira; (b) Passo Indutivo (PI): para todo nu´mero natural n, se P (n) e´ verdadeira enta˜o P (n + 1) e´ verdadeira. Nestas condic¸o˜es, a propriedade P (n) e´ verdadeira para todo nu´mero natural n. Esquematicamente o princ´ıpio de induc¸a˜o pode ser representado da seguinte forma: [BI + PI] ⇒ ∀n, P (n). O Princ´ıpio da Induc¸a˜o Finita Generalizado Definic¸a˜o 2 (Princ´ıpio da Induc¸a˜o Finita Generalizado). Seja P (n) uma propriedade referente a nu´meros naturais que satisfaz as seguintes condic¸o˜es: 1. (BI): O nu´mero natural m satisfaz a propriedade P ; 2. (PI): Se um nu´mero natural n satisfaz a propriedade P enta˜o seu sucessor tambe´m satisfaz a propriedade P . Enta˜o todos os nu´meros naturais maiores ou iguais a m satisfazem a propriedade P . Vamos enta˜o retornar ao nosso problema inicial: provar que a equac¸a˜o (1.1) e´ verdadeira para qualquer nu´mero natural. Seja P (n) a propriedade que expressa a seguinte ide´ia: P (n) : 1 + 2 + . . .+ n = n(n+ 1) 2 A base de induc¸a˜o corresponde a asserc¸a˜o: (BI) P (1) : 1 = 1(1 + 1) 2 , que e´ trivialmente verdadeira. Para provarmos o (PI), assumimos que P (n) e´ uma proposic¸a˜o verdadeira, e precisamos mostrar que P (n+ 1) tambe´m e´ verdadeira. Em outras palavras, se a igualdade 1 + 2 + . . .+ n = n(n+ 1) 2 e´ verdadeira para um n fixo enta˜o 1 + 2 + . . .+ n+ (n+ 1) = (n+ 1)((n+ 1) + 1) 2 tambe´m vale. De fato, 1 + 2 + . . .+ n+ (n+ 1) = n(n+ 1) 2 + (n+ 1) = n(n+ 1) + 2(n+ 1) 2 = (n+ 1)(n+ 2) 2 , que por sua vez corresponde a P (n+ 1). Logo, P (n+ 1) e´ verdadeiro, e portanto P (n) e´ verdadeira para todo n ≥ 1. Como outro exemplo, considere a seguinte afirmac¸a˜o: 2n + 1 < 2n, para n ≥ 3. Para n = 3 (BI), a desigualdade e´ verdadeira pois 7 < 8. Para mostrarmos o (PI) assumimos que 2n+1 < 2n, e vamos tentar concluir que 2(n + 1) + 1 < 2n+1. De fato, 2(n + 1) + 1 = (2n + 1) + 2 < 2n + 2, onde a u´ltima desigualdade e´ obtida aplicando-se a hipo´tese de induc¸a˜o. Para n ≥ 3, temos que 2n + 2 < 2n + 2n = 2n+1, e portanto 2(n+ 1) + 1 < 2n+1 como quer´ıamos concluir. 4 Princ´ıpio da Induc¸a˜o Forte Teorema 1. Seja P uma propriedade referente aos nu´meros naturais. Dado n ∈ N, se a validade de P para todo nu´mero natural menor do que n implicar que P e´ verdadeira para n, enta˜o P e´ verdadeira para todos os nu´meros naturais. Prova. Este teorema e´ uma consequeˆncia imediata da seguinte afirmac¸a˜o: Um conjunto X ⊂ N com a propriedade (I) a seguir coincide com N. (I) Dado n ∈ N, se todos os nu´meros naturais menores do que n pertencem a X, enta˜o n ∈ X. � Leitura recomendada: O Princ´ıpio da Induc¸a˜o - Elon Lages Lima. Dispon´ıvel em http://www.obm.org.br/opencms/revista eureka/lista.html Exerc´ıcios 1. Prove: (a) n2 < 2n, para n ≥ 5. (b) n! > 2n, para n ≥ 4. (c) Para todo nu´mero natural n, 3 divide n3 − n. (d) Demonstre que a soma dos n primeiros nu´meros ı´mpares e´ igual a n2. (e) 12 + 22 + . . .+ n2 = n(n+ 1)(2n+ 1) 6 (f) O conjunto {an|n ∈ N} e´ definido por: a0 := 0 a1 := 1 ai+2 := 2ai+1 − ai (i ∈ N). Encontre uma fo´rmula geral para an e prove a correc¸a˜o de sua afirmac¸a˜o. (g) O conjunto {an|n ∈ N} e´ definido por: a0 := 0 a1 := 4 ai+2 := 4(ai+1 − ai) (i ∈ N). Prove que, para todo n, an = n.2 n+1. 2. Resolva os exerc´ıcios 8, 13, 14, 15, 17, 20 e 21 da leitura recomendada. 5 6 Cap´ıtulo 2 A Sintaxe da Lo´gica Proposicional Linguagens naturais vs. Linguagens formais Linguagens naturais, como o Portugueˆs ou o Ingleˆs, sa˜o suscet´ıveis a ambiguidades: A ma˜e observou o filho em seu quarto. Esta e´ uma das razo˜es pelas quais o estudo da lo´gica matema´tica e computacional utiliza uma linguagem formal. Mas o que e´ Lo´gica? • Mendelson: “Lo´gica e´ a ana´lise de me´todos de racioc´ınio.” • Mortari: “Lo´gica e´ a cieˆncia que estuda princ´ıpios e me´todos de infereˆncia, tendo o objetivo principal de determinar em que condic¸o˜es certas coisas se seguem (sa˜o consequeˆncia), ou na˜o, de outras.” • Como veremos neste curso, “a Lo´gica esta´ interessada principalmente na forma e na˜o no conteu´do dos argumentos.” (Souza) Neste curso estudaremos basicamente duas lo´gicas: 1. Lo´gica proposicional; 2. Lo´gica de predicados (ou lo´gica de primeira ordem). A Sintaxe da Lo´gica Proposicional A lo´gica proposicional e´ baseada na noc¸a˜o de proposic¸a˜o. Entendemos por proposic¸a˜o como sendo qualquer expressa˜o que possa ser qualificada como verdadeira ou falsa. Exemplos de proposic¸o˜es: 1. O nu´mero 2 e´ par. 2. O conjunto dos nu´meros reais e´ enumera´vel. 3. Se a oferta de morangos aumentar enta˜o o seu prec¸o vai diminuir. Na˜o sa˜o proposic¸o˜es: 7 1. Qual e´ o seu nome? 2. Feche a porta! Algumas proposic¸o˜es sa˜o minimais (ou atoˆmicas) no sentido que na˜o existe uma parte menor dela que ainda seja uma proposic¸a˜o. Por exemplo, • 2 ∈ {1, 3, 5} • O nu´mero 2 e´ par. Proposic¸o˜es mais complexas sa˜o podem ser constru´ıdas a partir de proposic¸o˜es atoˆmicas por meio de conectivos: • 2 e´ um nu´mero par e √2 e´ um nu´mero racional. • Se 2+2=5 enta˜o hoje e´ dia 10. • 2 e´ um nu´mero par ou √2 e´ um nu´mero racional. Para o estudo da Lo´gica Proposicional (e tambe´m da Lo´gica de Primeira Ordem) considerare- mos dois aspectos: o sinta´tico e o semaˆntico. A sintaxe de uma linguagem nos permite conhecer as expresso˜es bem formadas,enquanto que a semaˆntica se refere ao seu significado. Por exem- plo, a palavra “lo´jica” na˜o e´ uma expressa˜o bem formada do Portugueˆs de acordo com as regras gramaticais desta linguagem. A representac¸a˜o simbo´lica da lo´gica e´ feita utilizando-se um alfabeto. Definic¸a˜o 3 (Alfabeto da Lo´gica Proposicional). O alfabeto da lo´gica proposicional e´ definido por: (a) S´ımbolos de pontuac¸a˜o: “(” e “)”; (c) Um conjunto enumera´vel de s´ımbolos proposicionais: p0, p1, p2, . . . (d) Conectivos lo´gicos: – de aridade zero: ⊥; – una´rio: ¬; – bina´rios: ∧, ∨, →, ↔. Os s´ımbolos proposicionais e ⊥ constituem proposic¸o˜es indivis´ıveis que chamaremos de a´tomos ou proposic¸o˜es atoˆmicas. As fo´rmulas da lo´gica proposicional sa˜o cadeias de s´ımbolos (strings) do alfabeto definidas indutivamente. Conjuntos indutivos sa˜o particularmente importantes tanto em Matema´tica quanto em Computac¸a˜o. O primeiro conjunto indutivo que tivemos contato foi o conjunto dos nu´meros naturais: nat ::= 0:nat | S:nat → nat A definic¸a˜o acima nos diz que um nu´mero natural possui dois construtores: 0, e a func¸a˜o sucessor S. Por exemplo, S 0, S(S 0) e S(S(S 0)) sa˜o nu´meros naturais constru´ıdos a partir da grama´tica acima. Alternativamente, o conjunto dos nu´meros naturais pode ser definido da seguinte forma: 8 Definic¸a˜o 4. O conjunto N dos nu´meros naturais e´ o menor conjunto tal que: (i) 0 ∈ N (ii) se n ∈ N enta˜o S(n) ∈ N. De maneira ana´loga podemos definir o conjunto PROPdas fo´rmulas das lo´gica proposicional: Definic¸a˜o 5. O conjunto PROP das fo´rmulas bem formadas (fbf) da lo´gica proposicional e´ o menor conjunto tal que: 1. p ∈ PROP (s´ımbolos proposicionais) e ⊥ ∈ PROP; 2. Se a, b ∈ PROP enta˜o (a ∧ b), (a ∨ b), (¬a), (a→ b), (a↔ b) ∈ PROP. Exemplos: (a) (¬((p ∧ q)→ r)) (b) ((p→ q) ∧ (¬((r ∨ p)→ q))) (c) ((p→ q)→ (r → (s ∨ t))) Teorema 2 (Princ´ıpio de induc¸a˜o). Seja A uma propriedade. Temos que A(ϕ) (i.e. a fo´rmula ϕ satisfaz a propriedade A) para todo ϕ ∈ PROP se, e somente se 1. A(⊥) e´ verdadeira 2. A(p) e´ verdadeira para toda varia´vel proposicional p 3. Se A(ϕ) e A(ψ) enta˜o A(ϕ�ψ), onde � ∈ {→,↔,∧,∨} 4. Se A(ϕ) enta˜o A(¬ϕ) Prova. Let X = {ϕ ∈ PROP | A(ϕ)}. Temos que X satisfaz os itens 1 e 2 da Definic¸a˜o 5 e portanto PROP ⊆ X. Logo A(ϕ) e´ verdadeiro para toda fo´rmula ϕ. � Propriedades sobre conjuntos indutivos sa˜o demonstradas utilizando-se induc¸a˜o, como explicado no cap´ıtulo anterior. As fo´rmulas da lo´gica proposicional tambe´m sa˜o definidas indutivamente. Definic¸a˜o 6. Definimos indutivamente as fo´rmulas bem formadas (fbf) da seguinte maneira: 1. Um s´ımbolo proposicional e ⊥ sa˜o uma fbf (chamada de fo´rmula atoˆmica); 2. Se a e b sa˜o fbf enta˜o (a ∧ b), (a ∨ b), (¬a), (a→ b) e (a↔ b) tambe´m sa˜o fbf. 3. Cla´usula maximal: a linguagem da lo´gica proposicional e´ o menor conjunto que satisfaz as regras 1 ou 2 acima. Pareˆnteses mais externos podem ser omitidos ja´ que estes na˜o geram ambiguidade: (a) ¬((p ∧ q)→ r) (b) (p→ q) ∧ (¬((r ∨ p)→ q)) 9 (c) (p→ q)→ (r → (s ∨ t)) Adicionalmente, a fim de possibilitar eliminar mais pareˆnteses, adotaremos a seguinte ordem de precedeˆncia para os conectivos: 1. ¬ 2. ∧,∨ 3. →, ↔ 4. → associa-se a` direita; 5. ∧ e ∨ associam-se a` esquerda. Exemplos 1. • p→ q → r representa (p→ (q → r)); • p ∧ q ∧ r representa (p ∧ q) ∧ r. Recursa˜o Teorema 3 (Definic¸a˜o por recursa˜o). Sejam H� : A2 → A and H¬ : A→ A func¸o˜es dadas, e seja Hat uma func¸a˜o do conjunto de a´tomos em A. Enta˜o existe exatamente uma func¸a˜o F : PROP→ A tal que: • F (ϕ) = Hat(ϕ), se ϕ e´ atoˆmica; • F (ϕ�ψ) = H�(F (ϕ), F (ψ)), onde � ∈ {→,↔,∧,∨} • F (¬ϕ) = H¬(F (ϕ)) Prova. � Definic¸a˜o 7 (Subfo´rmula). Dada uma fbf H, definimos recursivamente as subfo´rmulas de H da seguinte forma: (a) H e´ uma subfo´rmula de H; (b) Se H = ¬G enta˜o G e´ uma subfo´rmula de H; (c) Se H = F ∧G,F ∨G,F → G enta˜o F e G sa˜o subfo´rmulas de H. Exemplo 1. Denotando por Subf(H), o conjunto das subfo´rmulas de H, temos que Subf((p ∨ ¬q)→ (r ∧ ¬q)) = {p, q, r,¬q, p ∨ ¬q, r ∧ ¬q, (p ∨ ¬q)→ (r ∧ ¬q)} Pela definic¸a˜o anterior, uma fo´rmula e´ sempre subfo´rmula de si mesma. Dizemos que uma subfo´rmula H de F e´ pro´pria se H ∈ Subf(F ) e H 6= F . Definic¸a˜o 8. O tamanho ou complexidade de uma fo´rmula A, representado por |A|, e´ um nu´mero inteiro positivo definido por: 10 1. |p| = 1, para toda fo´rmula atoˆmica p; 2. |¬A| = 1 + |A|; 3. |A ◦B| = 1 + |A|+ |B|, para ◦ ∈ {∧,∨,→}. Exemplos 2. Se p, q e r sa˜o varia´veis proposicionais enta˜o: • |¬p| = 2 • |p→ q ∧ r| = 5 Exerc´ıcios 1. Determine quais das fo´rmulas a seguir sa˜o bem formadas: (a) → p (b) p ∧ q → p (c) pq ∧ ¬b (d) p¬ (e) p→ p→ q → q (f) (p ∧ q)→ (p ∨ (q ∧ r)) 2. Assumindo a ordem de precedeˆncia dada anteriormente, reescreva estas fo´rmulas colocando tantos pareˆnteses quanto for poss´ıvel. Por exemplo, p ∧ q → r deve ser reescrito como (p ∧ q)→ r ja´ que o conectivo ∧ tem maior prioridade do que →. (a) ¬p ∧ q → r (b) (p→ q) ∧ ¬(r ∨ p→ q) (c) (p→ q)→ (r → s ∨ t) (d) p ∨ (¬q → p ∧ r) (e) p ∨ q → ¬p ∧ r (f) p ∨ p→ ¬r 3. Determine todas as subfo´rmulas das fo´rmulas dadas no exerc´ıcio 2. 4. Calcule a complexidade das fo´rmulas dadas no exerc´ıcio 2. 5. Definir por induc¸a˜o sobre a estrutura das fo´rmulas a func¸a˜o at(φ) que retorna o conjunto de todos os a´tomos que ocorrem na fo´rmula φ. Por exemplo, at(p ∧ (p→ q ∨ p)) = {p, q}. 6. Defina por induc¸a˜o sobre a estrutura das fo´rmulas a func¸a˜o imp(φ) que retorna o nu´mero de implicac¸o˜es que ocorrem em φ. Exemplo: imp(p→ (p→ ¬q)) = 2. 7. Prove que uma fo´rmula da lo´gica proposicional com n conectivos possui, no ma´ximo, 2n+ 1 subfo´rmulas. 11 12 Cap´ıtulo 3 A Semaˆntica da Lo´gica Proposicional A semaˆntica trata do significado dos objetos da lo´gica. Por exemplo, o significado que pretendemos atribuir ao s´ımbolo de negac¸a˜o ¬ e´ tal que uma fo´rmula φ e´ verdadeira sempre que ¬φ for falsa e vice-versa. Esta intenc¸a˜o pode ser expressa por meio da seguinte tabela verdade: φ ¬φ V F F V Para a conjunc¸a˜o, denotada por ∧, esperamos que uma fo´rmula da forma φ∧ψ seja verdadeira sempre que φ e ψ forem verdadeiras: φ ψ φ ∧ ψ V V V V F F F V F F F F Para a disjunc¸a˜o, denotada por ∨, esperamos que uma fo´rmula da forma φ ∨ ψ seja verdadeira sempre que φ ou ψ forem verdadeiras: φ ψ φ ∨ ψ V V V V F V F V V F F F Para a implicac¸a˜o, denotada por→, esperamos que uma fo´rmula da forma φ→ ψ seja verdadeira em todos os casos, exceto quando φ for verdadeira e ψ for falsa: φ ψ φ→ ψ V V V V F F F V V F F V 13 A bi-implicac¸a˜o, que abreviamos por ↔, e´ muito utilizado em Matema´tica e corresponde a expressa˜o “se e somente se”: p↔ q ≡ (p→ q) ∧ (q → p) Para a bi-implicac¸a˜o, esperamos que uma fo´rmula da forma φ↔ ψ seja verdadeira sempre que φ e ψ tiverem a mesma valorac¸a˜o: φ ψ φ↔ ψ V V V V F F F V F F F V Valorac¸a˜o de Fo´rmulas Sabendo que as varia´veis p, q, r e s teˆm valor respectivamente igual a V , F , F e V , podemos determinar o valor da fo´rmula φ ≡ (p→ q)↔ (r ∧ (s ∨ p)) a partir das tabelas dadas, da seguinte forma: p q r s p→ q s ∨ p r ∧ (s ∨ p) φ V F F V F V F V A partir da semaˆntica dada para os conectivos, vamos construir a tabela verdade de algumas fo´rmulas. Exemplos Como construir a tabela verdade da fo´rmula p→ (p ∨ q)? p q p ∨ q p→ (p ∨ q) V V V V V F V V F V V V F F F V Uma fo´rmula que e´ sempre verdadeira independente da valorac¸a˜o dada a`s suas varia´veis e´ chamada de tautologia. Vejamos mais um exemplo: construir a tabela verdade da fo´rmula (p ∧ q) ∨ (p ∧ r). p q r p ∧ q p ∧ r (p ∧ q) ∨ (p ∧ r) V V V V V V V V F V F V V F V F V V V F F F F F F V V F F FF V F F F F F F V F F F F F F F F F 14 Interpretac¸o˜es Definic¸a˜o 9. Uma interpretac¸a˜o I na lo´gica proposicional e´ uma func¸a˜o bina´ria tal que: • o domı´nio de I e´ o conjunto das fo´rmulas da lo´gica proposicional; • o contradomı´nio de I e´ o conjunto {V, F}. Definic¸a˜o 10. Dadas uma fo´rmula φ e uma interpretac¸a˜o I, definimos o significado de φ, denotado por I[φ], da seguinte maneira: • Se φ e´ uma varia´vel proposicional p enta˜o I[φ] = I[p]. • Se φ = ¬ψ enta˜o: – I[φ] = V , se I[ψ] = F ; – I[φ] = F , se I[ψ] = V . • Se φ = ψ ∧ ξ enta˜o: – I[φ] = V , se I[ψ] = V e I[ξ] = V ; – I[φ] = F , se I[ψ] = F ou I[ξ] = F . • Se φ = ψ ∨ ξ enta˜o: – I[φ] = V , se I[ψ] = V ou I[ξ] = V ; – I[φ] = F , se I[ψ] = F e I[ξ] = F . • Se φ = ψ → ξ enta˜o: – I[φ] = V , se I[ψ] = F ou I[ξ] = V ; – I[φ] = F , se I[ψ] = V e I[ξ] = F . • Se φ = ψ ↔ ξ enta˜o: – I[φ] = V , se I[ψ] = I[ξ]; – I[φ] = F , se I[ψ] 6= I[ξ]. Assim a tabela verdade de uma fo´rmula φ e´ a tabela que nos fornece todas as poss´ıveis interpretac¸o˜es para φ. De fato, cada linha da tabela verdade e´ uma interpretac¸a˜o (ou valorac¸a˜o) distinta para φ. Tautologias, contradic¸o˜es e contingeˆncias Definic¸a˜o 11. • Uma fo´rmula φ e´ uma tautologia (ou ainda, e´ va´lida) se para toda inter- pretac¸a˜o I, vale que I[φ] = V . Utilizamos a notac¸a˜o |= φ, para denotar que “φ e´ uma tautologia”. • Uma fo´rmula φ e´ uma contradic¸a˜o (ou insatisfat´ıvel) se para toda interpretac¸a˜o I, vale que I[φ] = F . • Uma fo´rmula φ e´ uma contingeˆncia se seu valor de verdade depende da interpretac¸a˜o. • Uma fo´rmula φ e´ uma satisfat´ıvel se existir pelo menos uma interpretac¸a˜o I tal que I[φ] = V . 15 Relac¸o˜es entre as propriedades • Se uma fo´rmula e´ uma tautologia enta˜o ela e´ satisfat´ıvel; • Se uma fo´rmula e´ satisfat´ıvel enta˜o ela pode ser uma tautologia ou uma contingeˆncia; • Se uma fo´rmula na˜o e´ satisfat´ıvel enta˜o ela e´ uma contradic¸a˜o; • Se uma fo´rmula na˜o e´ uma contradic¸a˜o enta˜o ela e´ satisfat´ıvel e pode ser uma tautologia. Exemplos 1. A fo´rmula p ∨ ¬p e´ • uma tautologia, e portanto tambe´m e´ • satisfat´ıvel. 2. A fo´rmula p ∧ ¬p e´ • uma contradic¸a˜o, e portanto tambe´m e´ • insatisfat´ıvel. 3. A fo´rmula (p ∧ q) ∨ (p ∧ r) possui a seguinte tabela verdade: p q r p ∧ q p ∧ r (p ∧ q) ∨ (p ∧ r) V V V V V V V V F V F V V F V F V V V F F F F F F V V F F F F V F F F F F F V F F F F F F F F F • E portanto e´ satisfat´ıvel. Mais ainda, e´ uma contingeˆncia. 4. A fo´rmula p→ (p ∨ q) possui a seguinte tabela verdade: p q p ∨ q p→ (p ∨ q) V V V V V F V V F V V V F F F V • E portanto e´ uma tautologia (ou seja, e´ va´lida). 16 Cap´ıtulo 4 Consequeˆncia Lo´gica e o Ca´lculo Proposicional A Semaˆntica da Implicac¸a˜o Sabemos que a tabela verdade da implicac¸a˜o e´ dada como a seguir. φ ψ φ→ ψ V V V V F F F V V F F V • A primeira linha desta tabela nos diz que se temos duas sentenc¸as φ e ψ verdadeiras, enta˜o a sentenc¸a φ→ ψ tambe´m e´ verdadeira. Isto e´ razoa´vel pois e´ verdadeiro que uma sentenc¸a verdadeira implique em outra sentenc¸a verdadeira. • A segunda linha nos diz que e´ falso concluir uma sentenc¸a falsa a partir de uma outra que seja verdadeira. Isto tambe´m e´ razoa´vel; considere a seguinte situac¸a˜o: p: Eu sou nadador profissional. q: Eu tenho medo de piscinas. Neste caso, a implicac¸a˜o p → q tem que ser falsa porque nenhum nadador profissional pode ter medo de piscinas. • Ja´ a terceira e quarta linhas desta tabela na˜o possuem uma ana´lise ta˜o imediata. O que estas linhas dizem e´ que independentemente do valor de ψ, a implicac¸a˜o φ→ ψ e´ verdadeira sempre que φ for falsa. Isto se justifica pelo fato de que e´ poss´ıvel concluir qualquer sentenc¸a a partir de uma que seja falsa. Uma outra justificativa pode ser dada considerando-se a seguinte fo´rmula: p→ (p ∨ q) 17 Como qualquer argumento deve implicar em si mesmo e´ de se esperar que esta fo´rmula seja verdadeira independente do significado de p ou q. Isto e´, p→ (p ∨ q) e´ uma tautologia: p q p ∨ q p→ p ∨ q V V V V F V F V V F F V Completando esta tabela de acordo com a semaˆntica dada para a disjunc¸a˜o, temos: p q p ∨ q p→ p ∨ q V V V V V F V V F V V V F F F V A partir desta tabela podemos ver que qualquer modificac¸a˜o nas linhas 3 ou 4 da tabela da implicac¸a˜o resultaria que a fo´rmula acima na˜o seria uma tautologia. • Mais um pouco sobre a semaˆntica da implicac¸a˜o: suponha que p: x e´ um nu´mero real maior do que 10. q: x2 e´ um nu´mero real maior do que 100. Neste caso, claramente p→ q e´ verdadeiro, pois se p e´ verdadeiro enta˜o q e´ verdadeiro. Agora suponha que p seja falso. Isto e´, x ≤ 10. Se x = 5 enta˜o x2 = 25 e portanto q e´ falsa. Mas se x = −20, temos que p e´ falsa, mas q e´ verdadeira. Conclusa˜o: Nada se pode concluir a respeito de q mesmo sabendo que p→ q e´ verdadeiro. Esta situac¸a˜o esta´ expressa nas linhas 3 e 4 da tabela verdade da implicac¸a˜o. Causalidade e a Semaˆntica da Implicac¸a˜o Conforme a tabela verdade da implicac¸a˜o, se q e´ verdadeiro enta˜o p → q e´ verdadeiro inde- pendente do valor de verdade de p. Da mesma forma, se p e´ falso enta˜o p → q e´ verdadeiro inde- pendentemente do valor de verdade de q. Isto significa que a implicac¸a˜o na˜o expressa a semaˆntica da causalidade: na˜o e´ necessa´ria a relac¸a˜o de causa e efeito entre p e q para que se tenha p → q verdadeiro. Exerc´ıcios 1. Seja I uma interpretac¸a˜o e φ = p→ q uma fo´rmula da lo´gica proposicional. (a) Se I[φ] = V , o que se pode concluir a respeito de I[p] e I[q]? (b) Se I[φ] = V e I[p] = V , o que se pode concluir de I[q]? (c) Se I[q] = V , o que se pode concluir de I[φ]? (d) Se I[φ] = V e I[p] = F , o que se pode concluir de I[q]? 18 (e) Se I[q] = F e I[p] = V , o que se pode concluir de I[φ]? 2. Seja I uma interpretac¸a˜o tal que I[p → q] = V . O que se pode deduzir a respeito dos resultados das interpretac¸o˜es a seguir? (a) I[(p ∨ r)→ (q ∨ r)] (b) I[(p ∧ r)→ (q ∧ r)] (c) I[(¬p ∨ q)→ (p ∨ q)] 3. Repita o exerc´ıcio anterior supondo I[p→ q] = F . 4. Seja I uma interpretac¸a˜o tal que I[p ↔ q] = V . O que se pode concluir a respeito dos resultados das interpretac¸o˜es a seguir? (a) I[¬p ∧ q] (b) I[p ∨ ¬q] (c) I[q → p] (d) I[(p ∧ r)↔ (q ∧ r)] (e) I[(p ∨ r)↔ (q ∨ r)] 5. Repita o exerc´ıcio anterior supondo I[p↔ q] = F . 6. Demonstre se as seguintes afirmac¸o˜es sa˜o verdadeiras: (a) Se (φ↔ ψ) e (ψ ↔ γ) sa˜o tautologias enta˜o (φ↔ γ) e´ uma tautologia. (b) (φ↔ ψ) e´ uma tautologia se e somente se (φ ∧ ψ) ou (¬φ ∧ ¬ψ) e´ tautologia. (c) Se I[φ↔ ψ] = V enta˜o I[φ ∧ ψ] = V ou I[¬φ ∧ ¬ψ] = V . (d) ¬(φ↔ ψ) e´ tautologia se e somente se φ e ¬ψ sa˜o tautologias. (e) Se I[¬(φ↔ ψ)] = V enta˜o I[φ] = I[¬ψ] = V . Consequeˆncia Lo´gica O que significa dizer que uma fo´rmula e´ consequeˆncia de outra fo´rmula? Ou ainda, o que significa dizer que uma fo´rmula e´ consequeˆncia de um conjunto de fo´rmulas? Definic¸a˜o 12. Sejam F e G fo´rmulas da lo´gica proposicional. Dizemos que a fo´rmula G e´ con- sequeˆncia da fo´rmula F , denotado por F |= G, se qualquer interpretac¸a˜o que satisfaz F , tambe´m satisfaz G. Escrevemos |= F para dizer que F e´ satisfeita por qualquer interpretac¸a˜o. Em outras palavras, F e´ uma tautologia. Proposic¸a˜o 1. Sejam F e G fo´rmulas da lo´gica proposicional. Enta˜o G e´ consequeˆncia lo´gica de F se, e somente se, F → G e´ uma tautologia. Prova. Suponha que G seja consequeˆncia lo´gica de F ; ou seja qualquer interpretac¸a˜o que satisfaz F tambe´m satisfaz G, e desta forma F → G e´ uma tautologia. Reciprocamente, se F → G e´ uma tautologia enta˜o qualquer interpretac¸a˜o que satisfaz F tambe´m satisfaz G, e consequentemente G e´ consequeˆncia lo´gicade F . � 19 Exemplos 3. 1. F ∧G |= F 2. F |= F ∨G 3. F ∧ ¬F |= G A noc¸a˜o de consequeˆncia lo´gica pode ser estendida para conjuntos de forma imediata. De fato, se Γ e´ um conjunto finito de fo´rmulas da lo´gica proposicional, dizemos que a fo´rmula F e´ consequeˆncia lo´gica de Γ, denotado por Γ |= F , se qualquer interpretac¸a˜o que satisfac¸a todas as fo´rmulas de Γ tambe´m satisfaz F . Equivaleˆncia Lo´gica Definic¸a˜o 13. Se F e´ consequeˆncia lo´gica de G, e G e´ consequeˆncia lo´gica de F enta˜o dizemos que F e G sa˜o equivalentes, isto e´, F ≡ G. Exemplos 4. 1. F ∧G ≡ G ∧ F 2. F ∨G ≡ G ∨ F O Ca´lculo Proposicional Estamos interessados em construir um ca´lculo para raciocinar e tirar concluso˜es a partir de um certo conjunto de premissas. O ca´lculo que consideraremos aqui e´ conhecido como deduc¸a˜o natural. O me´todo de deduc¸a˜o natural e´ baseado nos seguintes princ´ıpios: • As infereˆncias sa˜o realizadas por regras de infereˆncia, onde hipo´teses podem ser introduzidas na prova, mas devera˜o ser descartadas para a consolidac¸a˜o da prova. • Para cada conectivo lo´gico, existem duas regras: uma para inserc¸a˜o do conectivo na prova, e outra para remoc¸a˜o (ou eliminac¸a˜o) do conectivo. Provas Formais O fato de que a fo´rmula ψ pode ser obtida (ou provada, ou ainda deduzida) a partir do conjunto (finito) de fo´rmulas φ1, . . . , φn e´ denotado por: φ1, . . . , φn︸ ︷︷ ︸ premissas ` ψ ← conclusa˜o Uma expressa˜o da forma φ1, . . . , φn ` ψ e´ chamada de sequente. 20 φ1 φ2 φ1 ∧ φ2 ∧-i φ1 ∧ φ2 φ1 ∧-e1 φ1 ∧ φ2 φ2 ∧-e2 φ1 φ1 ∨ φ2 ∨-i1 φ2 φ1 ∨ φ2 ∨-i2 φ1 ∨ φ2 [φ1] u ... χ [φ2] v ... χ χ ∨-e,u, v Regras de deduc¸a˜o natural (parte 1) Exemplo 2. Vamos construir uma prova para o sequente p ∧ q, r ` q ∧ r. 1 p ∧ q premissa 2 r premissa 3 q ∧-e2 1 4 q ∧ r ∧-i 3, 2 Utilizando uma estrutura de a´rvores: ∧-e2 p ∧ q q r q ∧ r ∧-i Exerc´ıcio 1. Construa uma prova para o sequente (p ∧ q) ∨ r ` (p ∨ r) ∧ (q ∨ r). 21 22 Cap´ıtulo 5 Deduc¸a˜o Natural (Parte 2) [φ]u ... ψ φ→ ψ →-i, u φ→ ψ φ ψ →-e [φ]u ... ⊥ ¬φ ¬-i,u φ ¬φ ⊥ ¬-e ¬¬φ φ ¬¬-e Tabela 5.1: Regras de deduc¸a˜o natural (parte 2) Exemplos Vamos construir uma prova para o seguinte sequente: p, p→ q, p→ q → r ` r 1 p→ q → r premissa 2 p→ q premissa 3 p premissa 4 q → r → -e 1, 3 5 q → -e 2, 3 6 r → -e 4, 5 Exemplo Considere o sequente: p, p→ q ` p ∧ q 23 1 p premissa 2 p→ q premissa 3 q → -e 4 p ∧ q ∧-i Regras Derivadas Apresentaremos agora algumas regras que sa˜o bastante u´teis na construc¸a˜o de provas, mas estas regras podem ser obtidas a partir das regras ja´ apresentadas. A primeira delas nos permite concluir qualquer fo´rmula φ a partir da constante ⊥. ⊥ φ ⊥-e ⊥ premissa ¬φ hipo´tese ⊥ co´pia 1 ¬¬φ ¬-i 2− 3 φ ¬¬-e 4 A prova dos exemplos a seguir utilizam a regra ⊥-e: ¬p ` p→ q ¬p premissa p hipo´tese ⊥ ¬-e 2, 1 q ⊥-e 3 p→ q → -i 2−4 ` ¬p→ (p→ (p→ q)) ¬p hipo´tese p hipo´tese ⊥ ¬-e 2, 1 p→ q ⊥-e 3 (p→ (p→ q)) → -i 2−4 ¬p→ (p→ (p→ q)) → -i 1−5 24 Uma outra regra derivada importante chama-se ¬¬-i, e sua prova e´ deixada como exerc´ıcio: φ ¬¬φ ¬¬-i Provas por contradic¸a˜o sa˜o muito comuns em Matema´tica. A ide´ia e´: para provar φ inicialmente assumimos ¬φ como hipo´tese e chegamos a uma contradic¸a˜o. Desta forma, ¬φ na˜o pode ser verdadeira, e portanto φ e´ verdadeiro. A regra de prova por contradic¸a˜o, denotada por (PBC), e´ apresentada a seguir, e sua prova e´ deixada como exerc´ıcio: [¬φ]u ... ⊥ φ (PBC),u Por fim, consideraremos mais uma regra derivada que, sem du´vida, sera´ muito u´til em provas. Esta regra e´ conhecida como Lei do Terceiro Exclu´ıdo (LTE), e sua prova e´ apresentada a seguir: φ ∨ ¬φ (LTE) ¬(φ ∨ ¬φ) hipo´tese φ hipo´tese φ ∨ ¬φ ∨-i1 2 ⊥ ¬-e 1, 3 ¬φ ¬-i 2− 4 φ ∨ ¬φ ∨-i2 5 ⊥ ¬-e 1, 6 ¬¬(φ ∨ ¬φ) ¬-i 1− 7 φ ∨ ¬φ ¬¬-e 8 Exerc´ıcios 1. Construa uma prova para a regra ¬¬-i: φ ¬¬φ ¬¬-i 2. Construa uma prova para a regra (PBC). 25 3. Construa uma prova para a regra (MT): φ→ ψ ¬ψ ¬φ (MT) 4. Prove a validade dos seguintes sequentes: (a) (p→ r) ∧ (q → r) ` p ∧ q → r (b) q → r ` (p→ q)→ (p→ r) (c) p→ (q → r), p→ q ` p→ r (d) p→ q, r → s ` p ∨ r → q ∨ s (e) p ∨ q ` r → (p ∨ q) ∧ r (f) (p ∨ (q → p)) ∧ q ` p (g) p→ q, r → s ` p ∧ r → q ∧ s (h) p→ q ` ((p ∧ q)→ p) ∧ (p→ (p ∧ q)) (i) ` q → (p→ (p→ (q → p))) (j) p→ q ∧ r ` (p→ q) ∧ (p→ r) (k) (p→ q) ∧ (p→ r) ` p→ q ∧ r (l) ` (p→ q)→ ((r → s)→ (p ∧ r → q ∧ s)) 5. Construa uma prova para os sequentes a seguir no ProofWeb: (a) (p ∧ q) ∧ r, s ∧ t ` q ∧ s (b) (p ∧ q) ` (q ∧ p) (c) (p ∧ q) ∧ r ` p ∧ (q ∧ r) (d) p→ (p→ q), p ` q (e) q → (p→ r),¬r, q ` ¬p (f) ` (p ∧ q)→ p (g) p ` q → (p ∧ q) (h) p ` (p→ q)→ q (i) p→ q ` ¬q → ¬p (j) p ∨ (p ∧ q) ` p (k) r, p→ (r → q) ` p→ (q ∧ r) (l) p→ (q ∨ r), q → s, r → s ` p→ s (m) (p ∧ q) ∨ (p ∧ r) ` p ∧ (q ∨ r) 26 Cap´ıtulo 6 A correc¸a˜o da lo´gica proposicional A correc¸a˜o da lo´gica proposicional Neste cap´ıtulo provaremos que a lo´gica proposicional e´ correta. Isto significa que so´ conseguire- mos construir provas de fo´rmulas que sejam verdadeiras segundo a semaˆntica das tabelas-verdade apresentadas anteriormente. Formalmente, a correc¸a˜o da lo´gica proposicional e´ dada pelo seguinte teorema: Teorema 4. Sejam φ1, . . . , φn e ψ fo´rmulas da lo´gica proposicional. Se φ1, . . . , φn ` ψ enta˜o φ1, . . . , φn |= ψ. Prova. Se φ1, . . . , φn ` ψ enta˜o existe uma prova de ψ a partir das premissas φ1, . . . , φn. Seja A(k) a seguinte asserc¸a˜o: “para todo sequente φ1, . . . , φn ` ψ (n ≥ 0) que possui uma prova de comprimento k, temos que φ1, . . . , φn |= ψ.” A prova segue por induc¸a˜o sobre k: BI: Se a prova tem comprimento 1 enta˜o tem que ser da forma: 1. φ1 premissa Este e´ o caso quando n = 1 e φ1 = ψ, ou seja estamos considerando o sequente ψ ` ψ. E´ claro que ψ |= ψ. PI: Assuma que a prova do sequente φ1, . . . , φn ` ψ tenha comprimento k, e que a asserc¸a˜o que queremos provar seja verdadeira para todos os naturais menores que k. Nossa prova tem a seguinte estrutura: 1 φ1 premissa 2 φ2 premissa ... n φn premissa ... k ψ Precisamos analisar caso a caso qual foi a u´ltima regra aplicada nesta prova: 27 1. Se a u´ltima regra aplicada foi (∧i) enta˜o sabemos que ψ e´ da forma ψ1 ∧ψ2 e a conclusa˜o da linha k se refere a duas linhas anteriores que possuem ψ1 e ψ2 como conclusa˜o. Sejam k1 e k2 estas linhas. Como k1 e k2 sa˜o menores que k enta˜o temos que existem provas dos sequentes φ1, . . . , φn ` ψ1 e φ1, . . . , φn ` ψ2 que teˆm comprimento menor que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn |= ψ1 e φ1, . . . , φn |= ψ2 valem, e portanto φ1, . . . , φn |= ψ1 ∧ ψ2. 2. Se a u´ltima regra aplicada foi (∨e) enta˜o temos uma premissa ou uma prova de uma fo´rmula da forma η1∨ η2 em uma linha k′ < k, onde a aplicac¸a˜o de (∨e) na linha k se refere a` fo´rmula η1 ∨ η2 da linha k′. Graficamente temos a seguinte situac¸a˜o: 1 φ1 premissa 2 φ2 premissa ... n φn premissa ... k′ η1 ∨ η2 k′ + 1 k′′ − 1 η1 ... ψ hipo´tese k′′ k − 1 η2 ... ψ hipo´tese k ψ Desta forma, temos uma prova (de comprimento menor do que k) do sequente φ1, . . . , φn ` η1 ∨ η2. Convertendo η1 em premissa obtemos uma prova para o sequente φ1, . . . , φn, η1 ` ψ, que por sua vez possui comprimento menor do que k. Da mesma forma, obtemos uma prova de comprimento menor do que k para o sequente φ1, . . . , φn, η2 ` ψ. Por hipo´tese de induc¸a˜o conclu´ımos que as relac¸o˜es φ1, . . . , φn |= η1∨η2, φ1, . . . , φn, η1 |= ψ e φ1, . . . , φn, η2 |= ψ valem, e portanto podemos concluir que φ1, . .. , φn |= ψ. 3. Se a u´ltima regra aplicada foi (→ i) enta˜o sabemos que ψ e´ da forma ψ1 → ψ2. Graficamente temos a seguinte situac¸a˜o: 1 φ1 premissa 2 φ2 premissa ... n φn premissa ... k′ ψ1 ... ψ2 hipo´tese k ψ1 → ψ2 28 4. Se a u´ltima regra aplicada foi (→ i) enta˜o sabemos que ψ e´ da forma ψ1 → ψ2. Graficamente temos: 1. φ1 premissa ... n φn premissa ... k′ k − 1 ψ1 ... ψ2 hipo´tese k ψ1 → ψ2 1. φ1 premissa ... n φn premissa n+ 1 ψ1 premissa ... k − 1 ψ2 Sendo assim, convertendo ψ1 em hipo´tese temos uma prova do sequente φ1, . . . , φn, ψ1 ` ψ2 que possui comprimento menor do que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn, ψ1 |= ψ2, e portanto φ1, . . . , φn |= ψ1 → ψ2 pelo teorema da deduc¸a˜o. 5. Se a u´ltima regra aplicada foi (∧e1) enta˜o temos uma prova do sequente φ1, . . . , φn ` ψ ∧ ψ′ de comprimento menor do que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn |= ψ ∧ ψ′, e da´ı conclu´ımos que φ1, . . . , φn |= ψ. 6. A prova para (∧e2) e´ inteiramente ana´loga (exerc´ıcio). 7. Se a u´ltima regra aplicada foi (∨i1) enta˜o ψ e´ da forma ψ1∨ψ2. Ale´m disto, temos uma prova do sequente φ1, . . . , φn ` ψ1 de comprimento menor do que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn |= ψ1, e portanto φ1, . . . , φn |= ψ1 ∨ ψ2. 8. A prova para (∨i2) e´ ana´loga (exerc´ıcio). 9. Se a u´ltima regra aplicada foi (→ e) enta˜o temos uma prova dos sequentes φ1, . . . , φn ` φ→ ψ e φ1, . . . , φn ` φ ambas de comprimento menor do que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn |= φ→ ψ e φ1, . . . , φn |= φ. Portanto, φ1, . . . , φn |= ψ. 10. Se a u´ltima regra aplicada foi (¬i) enta˜o ψ e´ da forma ¬ψ1. Graficamente temos a seguinte situac¸a˜o: 1. φ1 premissa ... n φn premissa ... k′ k − 1 ψ1 ... ⊥ hipo´tese k ¬ψ1 1. φ1 premissa ... n φn premissa n+ 1 ψ1 premissa ... k − 1 ⊥ Sendo assim, temos uma prova do sequente φ1, . . . , φn, ψ1 ` ⊥ de comprimento menor do que k. Por hipo´tese de induc¸a˜o temos que φ1, . . . , φn, ψ1 |= ⊥, e portanto φ1, . . . , φn |= ¬ψ1. � 29 A correc¸a˜o da lo´gica proposicional e´ u´til para garantirmos a na˜o existeˆncia de uma prova para um dado sequente. De fato, suponha que voceˆ queira provar que φ1, . . . , φn ` ψ. Mas na˜o esteja conseguindo... Como garantir que na˜o existe uma prova para este sequente? Pelo resultado que acabamos de ver, basta encontrarmos uma interpretac¸a˜o para a qual as fo´rmulas φ1, . . . , φn tenham valor de verdade V e ψ, F . Neste caso, na˜o temos φ1, . . . , φn |= ψ, e pela correc¸a˜o da lo´gica proposicional o sequente φ1, . . . , φn ` ψ na˜o e´ va´lido. Exerc´ıcio 1. Escreva a prova de correc¸a˜o da lo´gica proposicional incluindo todos os detalhes. 30 Cap´ıtulo 7 A Completude da Lo´gica Proposicional A Completude da Lo´gica Proposicional A lo´gica proposicional e´ completa. Isto significa que sempre que φ1, . . . , φn |= ψ enta˜o existe uma prova (em deduc¸a˜o natural) do sequente φ1, . . . , φn ` ψ. Este resultado complementa o teorema da correc¸a˜o que foi provado na sec¸a˜o 6. Estes dois resultados combinados nos dizem que: φ1, . . . , φn ` ψ sse φ1, . . . , φn |= ψ. Temos assim a liberdade de qual me´todo utilizar: o primeiro envolve a busca de uma prova que e´ onde se baseia o paradigma de programac¸a˜o lo´gica; o segundo praticamente consiste em computar tabelas-verdade. Ambos os me´todos sa˜o intrata´veis em geral, mas para problemas particulares um me´todo pode se mostrar mais adequado do que o outro. A prova da completude da lo´gica proposicional sera´ dividida em treˆs passos: 1. Assumindo φ1, . . . , φn |= ψ, mostraremos que |= φ1 → (φ2 → (. . . (φn → ψ) . . .)); 2. Da´ı mostraremos ` φ1 → (φ2 → (. . . (φn → ψ) . . .)); 3. Por fim, mostraremos que φ1, . . . , φn ` ψ. Inicialmente assuma que φ1, . . . , φn |= ψ. Para mostramos que a fo´rmula φ1 → (φ2 → (. . . (φn → ψ) . . .)) e´ uma tautologia basta observar que a u´nica interpretac¸a˜o capaz de falsificar esta fo´rmula e´ tal que: → uuu uuu uuu II II II II II V φ1 → ww ww ww ww w V φ2 → zz zz zz zz z CC CC CC CC V φn F ψ 31 Mas esta interpretac¸a˜o contradiz o fato de que φ1, . . . , φn |= ψ. Portanto, temos que |= φ1 → (φ2 → (. . . (φn → ψ) . . .)). Provaremos o item 2 via um resultado mais geral: Teorema 5. Se |= η, enta˜o ` η. Em outras palavras, se η e´ uma tautologia enta˜o η e´ um teorema. Prova. Assuma que |= η. Se η possui n varia´veis proposicionais distintas p1, . . . , pn enta˜o sabemos que η e´ verdadeira para cada uma das 2n poss´ıveis interpretac¸o˜es. Como, a partir desta informac¸a˜o construir uma prova para η? Para casos particulares isto pode ser uma tarefa fa´cil, mas aqui estamos interessados em um procedimento uniforme que possa ser utilizado sempre. A ide´ia chave e´ codificar cada linha da tabela verdade de η como um sequente, e enta˜o construir provas para cada um destes 2n sequentes. Finalmente combinamos estas provas em uma u´nica prova para η. Isto sera´ feito com a ajuda da seguinte proposic¸a˜o: Proposic¸a˜o 2. Seja φ uma fo´rmula da lo´gica proposicional onde p1, . . . , pn sa˜o todas as varia´veis proposicionais que ocorrem em φ. Seja l uma linha qualquer na tabela-verdade de φ. Para todo 1 ≤ i ≤ n, seja pˆi igual a pi se pi na linha l e´ V e ¬pi caso contra´rio. Enta˜o temos: 1. pˆ1, . . ., pˆn ` φ se a entrada para φ na linha l e´ V ; 2. pˆ1, . . ., pˆn ` ¬φ se a entrada para φ na linha l e´ F . Prova. A prova e´ por induc¸a˜o estrutural na fo´rmula φ: 1. Se φ e´ uma varia´vel proposicional p enta˜o precisamos provar que p ` p e ¬p ` ¬p, o que e´ trivial. 2. Se φ e´ da forma ¬φ1 enta˜o temos dois casos a considerar: • Primeiro assuma que φ tem valor V . Neste caso, φ1 tem valor F . Ale´m disto φ1 conte´m as mesmas varia´veis proposicionais de φ. Por hipo´tese de induc¸a˜o conclu´ımos que pˆ1, . . ., pˆn ` ¬φ1. • Se φ tem valor F enta˜o φ1 tem valor V e por hipo´tese de induc¸a˜o temos que pˆ1, . . ., pˆn ` φ1. Utilizando a regra (¬¬i) podemos estender a prova de pˆ1, . . ., pˆn ` φ1 para uma de pˆ1, . . ., pˆn ` ¬¬φ1, ou seja pˆ1, . . ., pˆn ` ¬φ. Nos casos a seguir precisamos considerar duas sub-fo´rmulas, isto e´, φ e´ da forma φ1◦φ2, onde ◦ e´ igual a→, ∧ ou ∨. Em todos estes casos denotaremos por q1, . . . , ql as varia´veis proposicionais de φ1, e por r1, . . . , rk as varia´veis proposicionais de φ2. Sendo assim temos que {q1, . . . , ql}∪{r1, . . . , rk} = {p1, . . . , pn}. 3. Seja φ da forma φ1 → φ2. • Se φ tem valor F enta˜o sabemos que φ1 tem valor V e φ2 tem valor F . Por hipo´tese de induc¸a˜o, temos que qˆ1, . . ., qˆl ` φ1 e rˆ1, . . ., rˆk ` ¬φ2, e portanto pˆ1, . . ., pˆn ` φ1 ∧ ¬φ2. Precisamos provar que pˆ1, . . ., pˆn ` ¬(φ1 → φ2). Isto e´ feito mostrando-se que φ1 ∧ ¬φ2 ` ¬(φ1 → φ2) (exerc´ıcio). • Se φ tem valor V enta˜o temos treˆs casos a considerar: 32 (a) Primeiro, se φ1 e φ2 teˆm valor F enta˜o por hipo´tese de induc¸a˜o temos que qˆ1, . . ., qˆl ` ¬φ1 e rˆ1, . . ., rˆk ` ¬φ2 e portanto pˆ1, . . ., pˆn ` ¬φ1 ∧ ¬φ2. Para concluir este caso, basta provar que ¬φ1 ∧ ¬φ2 ` φ1 → φ2 (exerc´ıcio). (b) Se φ1 tem valor F e φ2 tem valor V , enta˜o utilizamos a hipo´tese de induc¸a˜o para concluir que pˆ1, . . ., pˆn ` ¬φ1 ∧ φ2. Conclu´ımos este caso provando que ¬φ1 ∧ φ2 ` φ1 → φ2 (exerc´ıcio). (c) Por fim, se φ1 e φ2 teˆm valor V enta˜o utilizando a hipo´tese de induc¸a˜o para concluir que pˆ1, . . ., pˆn ` φ1 ∧ φ2. Finalizamos este caso provando que φ1 ∧ φ2 ` φ1 → φ2 (exerc´ıcio). Os casos em que φ e´ da forma φ1 ∧ φ2 ou φ1 ∨ φ2 sa˜o ana´logos (exerc´ıcio!) � Ao aplicarmos esta te´cnica para a fo´rmula φ1 → (φ2 → (. . . (φn → ψ) . . .)), como ela e´ uma tautologia temos que todas as 2n linhas de sua tabela verdade teˆm valor verdadeV . Portanto, pela proposic¸a˜o anterior obtemos 2n provas para o sequente pˆ1, . . ., pˆn ` φ1 → (φ2 → (. . . (φn → ψ) . . .)) para cada um dos casos em que pˆi seja pi ou ¬pi. Nosso trabalho e´ juntar todas estas provas em uma prova uma para o sequente ` φ1 → (φ2 → (. . . (φn → ψ) . . .)). Faremos isto atrave´s de um exemplo para a tautologia p ∧ q → p. A proposic¸a˜o anterior nos garante a existeˆncia de uma prova para os seguintes sequentes: p, q ` p ∧ q → p ¬p, q ` p ∧ q → p p,¬q ` p ∧ q → p ¬p,¬q ` p ∧ q → p Para construir uma prova para o sequente ` p ∧ q → p utilizaremos a LTE para cada uma das varia´veis proposicionais que aparecem na fo´rmula. Posteriormente assumimos cada um dos casos pela utilizac¸a˜o da regra (∨e). p ∨ ¬p LTE p hip q ∨ ¬q LTE q hip ... p ∧ q → p ¬q hip ... p ∧ q → p p ∧ q → p (∨e) ¬p hip q ∨ ¬q LTE q hip ... p ∧ q → p ¬q hip ... p ∧ q → p p ∧ q → p (∨e) p ∧ q → p (∨e) 33 O me´todo e´ apresentado para um exemplo, mas o mesmo e´ uniforme e pode ser utilizado para tautologias em geral. Finalmente precisamos encontrar uma prova para o sequente φ1, . . . , φn ` ψ a partir de uma prova do sequente ` φ1 → (φ2 → (. . . (φn → ψ) . . .)). Isto pode ser feito aplicando sucessivamente a regra (→ e) tomando φ1, . . . , φn como premissas: φ1 premissa ... φn premissa ... φ1 → (φ2 → (. . . (φn → ψ) . . .)) φ2 → (. . . (φn → ψ) . . .) (→ e) ... ψ (→ e) Como consequeˆncia dos teoremas das correc¸a˜o e completude da lo´gica proposicional temos o seguinte corla´rio: Corola´rio 1. Sejam φ1, . . . , φn, ψ fo´rmulas da lo´gica proposicional. Enta˜o φ1, . . . , φn |= ψse, e somente se o sequente φ1, . . . , φn ` ψ. 7.0.1 Exerc´ıcio 1. Complete os detalhes da prova apresentada neste cap´ıtulo. 34 Cap´ıtulo 8 Conjuntos Completos de Conectivos Conjuntos Completos de Conectivos Os conectivos lo´gicos que estamos utilizando (¬,∧,∨,→,↔) sa˜o, de certa forma, “redundantes”. Isto e´ claro para o caso da dupla implicac¸a˜o uma vez que definimos este conectivo em func¸a˜o da implicac¸a˜o e da conjunc¸a˜o: φ↔ ψ ≡ (φ→ ψ) ∧ (ψ → φ) onde ψ e phi sa˜o fo´rmulas quaisquer da lo´gica proposicional. Neste sentido podemos dizer que a dupla implicac¸a˜o na˜o adiciona poder de expressividade a` linguagem constru´ıda a partir de varia´veis e dos conectivos ¬, ∧, ∨ e →. Podemos, nos perguntar enta˜o se algum dos conectivos ¬, ∧, ∨ e → pode ser representado em func¸a˜o dos outros treˆs. Esta resposta tambe´m parece ser fa´cil de responder porque conhecemos uma equivaleˆncia que nos permite representar a implicac¸a˜o em func¸a˜o apenas da negac¸a˜o e da disjunc¸a˜o: φ→ ψ ≡ ¬φ ∨ ψ Desta forma, parece que precisamos pelo menos dos conectivos ¬, ∧ e ∨ para representar as fo´rmulas da lo´gica proposicional. Sera´ poss´ıvel diminuir ainda mais este conjunto? A resposta e´ sim! Mostraremos que os conectivos ¬, ∨ sa˜o suficientes para expressar todos os outros. Neste caso, dizemos que {¬,∨} e´ um conjunto completo de conectivos. Um conjunto de conectivos proposicionais Ψ e´ completo quando for poss´ıvel expressar de forma equivalente, os conectivos ¬, ∧, ∨, → e ↔ utilizando apenas os conectivos de Ψ. Definic¸a˜o 14. Seja Ψ um conjunto de conectivos. O conjunto Ψ e´ completo se, dada uma fo´rmula φ do tipo ¬p, (p∨q), (p∧q), (p→ q) ou p↔ q, podemos determinar uma outra fo´rmula ψ equivalente a φ e tal que ψ conte´m apenas os conectivos do conjunto Ψ e os s´ımbolos p e q presentes em φ. Proposic¸a˜o 3. O conjunto {¬,∨} e´ completo. Prova. p→ q ≡ ¬p ∨ q p ∧ q ≡ ¬(¬p ∨ ¬q) p↔ q ≡ (¬p ∨ q) ∧ (¬q ∨ p) ≡ ¬(¬(¬p ∨ q) ∨ ¬(¬q ∨ p)) � 35 Proposic¸a˜o 4. Seja φ uma fo´rmula da lo´gica proposicional. Enta˜o existe uma fo´rmula φ′ equi- valente a φ e constru´ıda apenas os conectivos ∨ e ¬ e os s´ımbolos proposicionais que ocorrem em φ. Prova. Induc¸a˜o sobre a estrutura de φ: • Se φ e´ uma varia´vel proposicional enta˜o tome φ′ = φ. • Se φ e´ da forma ¬ψ enta˜o por hipo´tese de induc¸a˜o ψ pode ser expressa equivalentemente por uma fo´rmula ψ′ que utiliza apenas os conectivos ∨, ¬ e os s´ımbolos proposicionais que ocorrem em ψ. Neste caso, tome φ′ como sendo a fo´rmula ¬ψ′. • Se φ e´ da forma ψ1 ∨ψ2 enta˜o por hipo´tese de induc¸a˜o, as fo´rmulas ψ1 e ψ2 podem ser repre- sentadas equivalentemente por fo´rmulas ψ′1 e ψ′2 que satisfazem as condic¸o˜es da proposic¸a˜o. Neste caso, fac¸a φ′ = ψ′1 ∨ ψ′2. • Se φ e´ da forma ψ1 → ψ2 enta˜o φ ≡ ¬ψ1∨ψ2. Por hipo´tese de induc¸a˜o existem fo´rmulas ψ′1 e ψ′2 que satisfazem as condic¸o˜es da proposic¸a˜o, e sa˜o respectivamente equivalentes a ψ1 e ψ2. Enta˜o basta tomar φ′ como sendo a fo´rmula ¬ψ′1 ∨ ψ′2. • Se φ e´ da forma ψ1 ∧ ψ2 enta˜o φ ≡ ¬(¬ψ1 ∨ ¬ψ2). Por hipo´tese de induc¸a˜o existem fo´rmulas ψ′1 e ψ′2 que satisfazem as condic¸o˜es da proposic¸a˜o, e sa˜o respectivamente equivalentes a ψ1 e ψ2. Enta˜o a fo´rmula ¬(¬ψ′1 ∨ ¬ψ′2) e´ a fo´rmula φ′ que desejamos. • Se φ for uma dupla implicac¸a˜o podemos converteˆ-la a uma fo´rmula equivalente contendo apenas os conectivos → e ∧, e recursivamente aplicar os passos de conversa˜o para cada um destes conectivos. � Proposic¸a˜o 5. Considere o considere o conectivo nand definido por: p nand q ≡ ¬(p ∧ q) O conjunto {nand} e´ completo. Ale´m disso, se φ e´ uma fo´rmula da lo´gica proposicional enta˜o φ pode ser expressa equivalentemente utilizando apenas o conectivo nand e o s´ımbolos proposicionais presentes em φ. Prova. Completude de {nand}: • ¬p ≡ p nand p. • p ∨ q ≡ ((p nand p) nand (q nand q)) Induc¸a˜o sobre a estrutura de φ: • Se φ e´ da forma ¬ψ enta˜o por hipo´tese de induc¸a˜o existe uma fo´rmula ψ′ equivalente a ψ e que possui apenas o conectivo nand e os s´ımbolos proposicionais de ψ. Enta˜o a fo´rmula ψ′ nandψ′ e´ equivalente a φ e possui apenas o conectivo nand e os s´ımbolos proposicionais de φ. • Se φ e´ da forma ψ1 ∨ψ2 enta˜o por hipo´tese de induc¸a˜o existem fo´rmulas ψ′1 e ψ′2 equivalentes a ψ1 e ψ2 e que possuem apenas o conectivo nand e os s´ımbolos proposicionais de ψ1 e ψ2, respectivamente. Enta˜o a fo´rmula (ψ′1 nand ψ′1) nand (ψ′2 nand ψ′2) e´ equivalente a φ e possui apenas o conectivo nand e os s´ımbolos proposicionais de φ. � 36 Exemplo 3. Considere a fo´rmula p ∧ (r → s). Temos: p ∧ (r → s) ≡ p ∧ (¬r ∨ s) ≡ p ∧ ¬¬(¬r ∨ s) ≡ p ∧ ¬(r ∧ ¬s) ≡ p ∧ (r nand (s nand s)) ≡ ¬¬(p ∧ (r nand (s nand s))) ≡ ¬(p nand (r nand (s nand s))) ≡ (p nand (r nand (s nand s))) nand (p nand (r nand (s nand s))) Exerc´ıcios 1. Mostre que {∨,→} e´ um conjunto completo de conectivos. 37 38 Cap´ıtulo 9 Formas Normais Formas Normais Utilizar deduc¸a˜o natural para construir provas de sequentes e´ apenas uma possibilidade dentre va´rias poss´ıveis. Da mesma forma, verificar instaˆncias de |= (consequeˆncia lo´gica) utilizando a Definic¸a˜o 12 e´ apenas uma possibilidade para verificar que F |= G. Neste cap´ıtulo, estudaremos outras alternativas para decidir se F |= G, ou de uma forma mais geral, se Γ |= G, onde Γ e´ um conjunto finito de fo´rmulas. As alternativas aqui apresentadas sa˜o baseadas em transformac¸o˜es sinta´ticas que preservam a semaˆntica das fo´rmulas. Iniciaremos com a definic¸a˜o de literal que constitui uma componente fundamental das formas normais. Definic¸a˜o 15 (Literal). Um literal e´ um a´tomo ou a negac¸a˜o de um a´tomo. Definic¸a˜o 16 (Cla´usula). Uma cla´usula e´ uma disjunc¸a˜o de literais. Definic¸a˜o 17 (Forma Normal Negada (FNN)). Uma fo´rmula da lo´gica proposicional esta´ em forma normal negada se conte´m apenas os conectivos ¬, ∧ e ∨, e o conectivo de negac¸a˜o esta´ aplicado apenas a fo´rmulas atoˆmicas. Proposic¸a˜o 6. Toda fo´rmula da lo´gica proposicional possui uma forma equivalente em forma normal negada. Prova. Seja φ uma fo´rmula da lo´gica proposicional. As transformac¸o˜es a seguir preservam a semaˆntica da fo´rmula, e umavez que nenhuma delas possa mais ser aplicada, teremos uma fo´rmula em FNN. Note que se φ e´ uma varia´vel proposicional enta˜o ja´ esta´ em FNN e na˜o ha´ nada a fazer. 1. Reescreva toda subfo´rmula da forma ψ1 ↔ ψ2 para (ψ1 → ψ2) ∧ (ψ2 → ψ1). 2. Reescreva toda subfo´rmula da forma ψ1 → ψ2 para ¬ψ1 ∨ ψ2. 3. (Leis de de Morgan): Reescreva toda subfo´rmula da forma ¬(ψ1 ∧ ψ2) para ¬ψ1 ∨ ¬ψ2; ¬(ψ1 ∨ ψ2) para ¬ψ1 ∧ ¬ψ2. 4. Reescreva toda subfo´rmula da forma ¬¬ψ para ψ. � 39 Exemplo 4. Considere a transformac¸a˜o a seguir, onde p e q sa˜o varia´veis proposicionais: p→ ¬(p↔ q) ≡1 p→ ¬((p→ q) ∧ (q → p)) ≡2 ¬p ∨ ¬((¬p ∨ q) ∧ (¬q ∨ p)) ≡3 ¬p ∨ ¬(¬p ∨ q) ∨ ¬(¬q ∨ p)) ≡3 ¬p ∨ (¬¬p ∧ ¬q) ∨ (¬¬q ∧ ¬p) ≡4 ¬p ∨ (p ∧ ¬q) ∨ (q ∧ ¬p) Exemplo 5. (¬p→ (¬p→ q)) ∧ (q → (¬p→ q)) ≡2 (¬¬p ∨ (¬¬p ∨ q)) ∧ (¬q ∨ (¬¬p ∨ q)) ≡4 (p ∨ p ∨ q) ∧ (¬q ∨ p ∨ q) A fo´rmula obtida acima esta´ em FNN, mas observe que algumas simplificac¸o˜es sa˜o poss´ıveis. De fato, a subfo´rmula p∨p e´ equivalente a p. Da mesma forma, q∨¬q e´ uma tautologia. Motivado por estas observac¸o˜es apresentaremos a seguir algumas regras de simplificac¸a˜o: 1. Reescreva toda subfo´rmula da forma ψ ∨ ψ para ψ. 2. Reescreva toda subfo´rmula da forma ψ ∧ ψ para ψ. 3. Reescreva toda subfo´rmula da forma ψ ∨ ¬ψ para >. 4. Reescreva toda subfo´rmula da forma ψ ∧ ¬ψ para ⊥. 5. Reescreva toda subfo´rmula da forma ψ ∨ > para >. 6. Reescreva toda subfo´rmula da forma ψ ∧ > para ψ. 7. Reescreva toda subfo´rmula da forma ψ ∨ ⊥ para ψ. 8. Reescreva toda subfo´rmula da forma ψ ∧ ⊥ para ⊥. Aplicando estas regras a fo´rmula (p∨ p∨ q)∧ (¬q∨ p∨ q) do exemplo anterior pode ser simplificada para p ∨ q. Forma Normal Conjuntiva (FNC) Definic¸a˜o 18. Uma fo´rmula esta´ em forma normal conjuntiva (fnc) se for uma conjunc¸a˜o de cla´usulas. Assim, se L representa um literal, e D uma disjunc¸a˜o de literais enta˜o uma fo´rmula C em fnc pode ser constru´ıda de acordo com a seguinte grama´tica: L ::= p | ¬p D ::= L | L ∨D C ::= D | D ∧ C 40 Exemplo 6. As fo´rmulas (¬q ∨ p ∨ r) ∧ (¬p ∨ r) ∧ q e (p ∨ r) ∧ (¬p ∨ r) ∧ (p ∨ ¬r) esta˜o em fnc, enquanto que (¬(q ∨ p) ∨ r) ∧ (q ∨ r) na˜o esta´ porque q ∨ p na˜o e´ um literal. Por que as formas normais conjuntivas sa˜o importantes? Uma das razo˜es e´ devido ao fato de que as formas normais conjuntivas nos permitem checar facilmente se uma fo´rmula e´ va´lida ou na˜o. Por exemplo, considere a fo´rmula (¬q∨ p∨ r)∧ (¬p∨ r)∧ q. Temos que |= (¬q∨ p∨ r)∧ (¬p∨ r)∧ q se vale cada uma das relac¸o˜es semaˆnticas a seguir: |= ¬q ∨ p ∨ r |= ¬p ∨ r |= q E como cada uma destas fo´rmulas e´ um literal ou a disjunc¸a˜o de literais enta˜o podemos decidir a validade da fo´rmula original da seguinte forma: Lema 1. Uma disjunc¸a˜o L1 ∨L2 ∨ . . .∨Ln e´ va´lida se, e somente se, existem 1 ≤ i, j ≤ n tais que Li = ¬Lj. Prova. Se Li = ¬Lj enta˜o o resultado e´ claro. Reciprocamente, suponha que L1∨L2∨. . .∨Ln seja va´lida. Suponha que na˜o existam 1 ≤ i, j ≤ n, tais que Li = ¬Lj . Enta˜o considere a interpretac¸a˜o I tal que, para todo 1 ≤ k ≤ n, I(Lk) = F se Lk for um a´tomo, e I(Lk) = V se Lk for a negac¸a˜o de um a´tomo. Claramente, I(L1∨L2∨ . . .∨Ln) = F o que contradiz nossa suposic¸a˜o inicial. � Nosso objetivo e´ esboc¸ar a ide´ia geral de um algoritmo (ou seja, uma func¸a˜o) que receba como entrada uma fo´rmula qualquer φ da lo´gica proposicional e retorne uma fo´rmula φ′ em forma normal conjuntiva tal que φ ≡ φ′. Como esta func¸a˜o deve funcionar para qualquer fo´rmula, isto sugere que a mesma seja contru´ıda por induc¸a˜o na estrutura da fo´rmula. Iniciaremos computando a forma normal negada (fnn) (ver Definic¸a˜o 17) de φ, que denotaremos por fnn(φ). Note que fnn(φ) conte´m ocorreˆncias apenas dos conectivos ¬, ∧ e ∨, e as negac¸o˜es esta˜o aplicadas apenas a`s fo´rmulas atoˆmicas. A ide´ia geral para a construc¸a˜o da func¸a˜o fnn e´ dada na Proposic¸a˜o 6. Assim, se a fo´rmula φ de entrada for uma conjunc¸a˜o da forma φ1 ∧ φ2 enta˜o precisamos recursivamente computar a fnc de φ1 e de φ2, que chamaremos respectivamente de φ ′ 1 e φ ′ 2. Neste caso, φ ′ 1 ∧ φ′2 esta´ em fnc, e e´ equivalente a` fo´rmula original φ. Por fim, se a fo´rmula φ for uma disjunc¸a˜o da forma φ1 ∨ φ2, e φ1 for uma conjunc¸a˜o da forma φ11 ∧ φ12 enta˜o precisamos aplicar a equivaleˆncia (φ11 ∧ φ12) ∨ φ2 ≡ (φ11 ∨ φ2) ∧ (φ12 ∨ φ2), e recursivamente continuar a transformac¸a˜o das subfo´rmulas (φ11 ∨ φ2) e (φ12 ∨ φ2). O caso em que φ2 e´ uma disjunc¸a˜o e´ ana´logo. (F ∧G) ∨H ≡ (F ∨H) ∧ (G ∨H) H ∨ (F ∧G) ≡ (H ∨ F ) ∧ (H ∨G). Exerc´ıcios Sabendo que p, q e r sa˜o varia´veis proposicionais, transforme cada uma das fo´rmulas a seguir para a forma normal conjuntiva. 1. p→ q → r 2. (p→ q) ∧ (q → r)→ p→ r 41 3. (p ∧ q) ∨ (q ∧ r) 4. (p→ q)↔ (¬p ∨ q) 5. ((p→ q)→ p)→ p Forma Normal Conjuntiva no ProofWeb O objetivo desta sec¸a˜o e´ fornecer subs´ıdios para a construc¸a˜o da func¸a˜o fnc que computa a forma normal conjuntiva de uma fo´rmula da lo´gica proposicional, segundo as ide´ias apresentadas na sec¸a˜o anterior. O primeiro passo e´ definir uma grama´tica para representar as fo´rmulas da lo´gica proposicional. Para isto precisaremos de um construtor para representar as varia´veis proposicionais, e tambe´m para cada um dos conectivos ¬, ∨, ∧ e→. A definic¸a˜o a seguir apresenta uma grama´tica poss´ıvel: Inductive fprop : Set := | var : string -> fprop | neg : fprop -> fprop | con : fprop -> fprop -> fprop | dis : fprop -> fprop -> fprop | imp : fprop -> fprop -> fprop. O construtor var e´ utilizado para representar as varia´veis proposicionais. Por exemplo, a varia´vel proposicional p sera´ representada no ProofWeb por var ‘‘p’’, enquanto que a fo´rmula p → q sera´ representada por imp (var ‘‘p’’) (var ‘‘q’’). A construc¸a˜o da func¸a˜o fnc sera´ dividida em va´rias etapas. Em cada etapa faremos uma parte da reduc¸a˜o. Iniciaremos com a func¸a˜o impl free que elimina as implicac¸o˜es que ocorrem na fo´rmula de acordo com a equivaleˆncia φ→ ψ ≡ ¬φ ∨ ψ. A func¸a˜o impl free e´ apresentada parcialmente a seguir; os detalhes sa˜o deixados como exerc´ıcio: Fixpoint impl_free (t:fprop) : fprop := match t with | var p => t | neg F => (* completar *) | con P Q => con (impl_free P) (impl_free Q) | dis P Q => (* completar *) | imp P Q => (* completar *) end. A definic¸a˜o acima utiliza a palavra reservada Fixpoint do Coq [CDT08] utilizada na definic¸a˜o de func¸o˜es recursivas. A primeira linha da definic¸a˜o diz que impl free e´ uma func¸a˜o recursiva que recebe um argumento t do tipo fprop, e retorna um outro termo do tipo fprop. A segunda linha e´ responsa´vel por fazer o pattern matching do argumento t com algum dos poss´ıveis construtores. O primeiro construtor poss´ıvel e´ var. Neste caso, se o argumento t for da forma var p enta˜o nenhuma 42 transformac¸a˜o e´ necessa´ria e a func¸a˜o retorna o pro´prio termo t como resultado. Se o argumento t for da forma neg F, ou seja for uma negac¸a˜o enta˜o recursivamente devemos eliminar as implicac¸o˜es existente na subfo´rmula F (os detalhes deste caso sa˜o deixados como exerc´ıcio). Se a fo´rmula t for uma conjunc¸a˜o da forma con P Q enta˜o devemos recursivamente eliminar as implicac¸o˜es existentes em cada uma das subfo´rmulas P e Q. Os outros casos (disjunc¸a˜o e implicac¸a˜o) sa˜o deixados como exerc´ıcio. A pro´xima etapa consiste na construc¸a˜o da func¸a˜o fnn que recebe como argumento uma fo´rmula sem implicac¸o˜es (→) e retorna uma fo´rmula equivalente em forma normal negada. A palavra re- servada Function utilizada abaixo caracteriza uma func¸a˜o recursiva. De fato, Function generaliza Fixpoint, mas este detalhe na˜o e´ importante aqui, o que precisamos entender na primeira linha da definic¸a˜o abaixo e´ que fnn e´ uma func¸a˜o recursiva que recebe como argumento uma fo´rmulat do tipo fprop, e que retorna como resultado uma outra fo´rmula. O texto {measure flength t} e´ utilizado para informar ao Coq qual a me´trica que diminui a cada chamada da func¸a˜o recursiva, que neste caso e´ o comprimento da fo´rmula que definimos atrave´s da func¸a˜o flength. Fixpoint flength (t:fprop) := match t with | var p => 1 | neg F => 1 + (flength F) | con F G => 1 + (flength F) + (flength G) | dis F G => 1 + (flength F) + (flength G) | imp F G => 1 + (flength F) + (flength G) end. Function fnn (t:fprop) measure flength t: fprop := match t with | neg(neg F) => (* completar *) | neg(con F G) => (* completar *) | neg(dis F G) => (* completar *) | con F G => (* completar *) | dis F G => (* completar *) | _ => t end. Na definic¸a˜o da func¸a˜o fnn, primeiro analisamos se a fo´rmula dada como entrada e´ uma negac¸a˜o de uma negac¸a˜o de uma fo´rmula, ou seja, neg(neg F). Neste caso, sabemos que devemos simples- mente computar a forma normal negada de F. Quando t for uma negac¸a˜o de uma conjunc¸a˜o (ou de uma disjunc¸a˜o) precisamos aplicar as lei de de Morgan e recursivamente computar a forma normal negada de F e G. O u´ltimo caso utiliza o curinga “ ” para dizer que em “qualquer outro caso na˜o considerado anteriormente”, a pro´pria fo´rmula t deve ser retornada. A func¸a˜o distr recebe como argumento um par de fo´rmulas t1 e t2 em forma normal negada, e computa a forma normal conjuntiva da disjunc¸a˜o t1 ∨ t2. Function distr (t:fprop * fprop) {measure (fun p => (flength (fst p)) + (flength (snd p)))}:fprop := match t with 43 | (con t11 t12,_) => (* completar *) | (_,con t21 t22) => (* completar *) | _ => (* completar *) end. A construc¸a˜o da func¸a˜o fnc e´ deixada como exerc´ıcio. Exerc´ıcios 1. Complete as definic¸o˜es das func¸o˜es impl free, fnn e distr. 2. Construa a func¸a˜o fnc que recebe como argumento uma fo´rmula φ qualquer da lo´gica propo- sicional e retorna a forma normal conjuntiva de φ. 44 Cap´ıtulo 10 A Lo´gica de Primeira Ordem A Lo´gica de Primeira Ordem: A necessidade de uma linguagem mais expressiva O ca´lculo proposicional possui limitac¸o˜es com respeito a codificac¸a˜o de sentenc¸as declarativas. De fato, o ca´lculo proposicional manipula de forma satisfato´ria componentes das sentenc¸as como na˜o, e , ou, se . . . enta˜o, mas certos aspectos lo´gicos que aparecem em linguagens naturais ou artificiais sa˜o muito mais ricos. Por exemplo, como expressar coisas do tipo: “Existe ...” e “Para todo . . . ” na lo´gica proposicional? Exemplo 7. Considere a seguinte sentenc¸a declarativa: Todo estudante e´ mais jovem do que algum instrutor. Na lo´gica proposicional podemos identificar esta sentenc¸a com uma varia´vel proposicional p. No entanto, esta codificac¸a˜o na˜o reflete os detalhes da estrutura lo´gica desta sentenc¸a. De que trata esta sentenc¸a? • Ser um estudante. • Ser um instrutor. • Ser mais jovem do que algue´m. Para expressar estas propriedades utilizaremos predicados. Por exemplo, podemos escrever estudante(ana) para denotar que Ana e´ uma estudante. Da mesma forma podemos escrever instru- tor(marcos) para denotar que Marcos e´ um instrutor. Por fim, podemos escrever jovem(ana,marcos) para denotar que Ana e´ mais jovem do que Marcos. Nestes exemplos, estudante, instrutor e jovem sa˜o exemplos de predicados. Ainda precisamos codificar as noc¸o˜es de “todo” e “algum”. Para isto introduziremos o con- ceito de varia´vel. Varia´veis sera˜o denotadas por letras latinas minu´sculas do final do alfabeto: u, v, w, x, y, z (possivelmente acrescidas de sub-´ındices x1, x2, . . .). Varia´veis devem ser pensadas como “lugares vazios” que podem ser preenchidos (ou instanciados) por elementos concretos, como joa˜o, maria, etc. Utilizando varia´veis podemos especificar o significado dos predicados estudante, instrutor e jovem de uma maneira mais formal: estudante(x): x e´ um estudante. instrutor(x): x e´ um instrutor. jovem(x,y): x e´ mais jovem do que y. 45 Note que o nome das varia´veis na˜o e´ importante: estudante(x): x e´ um estudante. e´ equivalente a estudante(y): y e´ um estudante. Para que possamos finalmente expressar em detalhes a sentenc¸a apresentada no exemplo precisamos codificar o significado de Todo e algum em Todo estudante e´ mais jovem do que algum instrutor. Os quantificadores ∀ e ∃ fazem este trabalho: ∀: significa para todo; ∃: significa existe. Os quantificadores ∀ e ∃ esta˜o sempre ligados a alguma varia´vel: ∀x: para todo x; ∃x: existe um x (ou existe algum x). Agora podemos finalmente codificar a sentenc¸a: Todo estudante e´ mais jovem do que algum instrutor. da seguinte forma: ∀x(estudante(x)→ (∃y(instrutor(y) ∧ jovem(x, y)))) Note que predicados diferentes podem ter um nu´mero distinto de argumentos: os predicados estu- dante e instrutor admitem apenas um argumento e por isto sa˜o chamados de predicados una´rios, enquanto que o predicado jovem admite dois argumentos, e portanto e´ um predicado bina´rio. O nu´mero de argumentos de um predicado e´ chamado sua aridade. Assim, os predicados una´rios teˆm aridade 1, enquanto que os predicados bina´rios teˆm aridade 2, etc. No ca´lculo de predicados sa˜o permitidos predicados com qualquer aridade finita. Exemplo 8. Considere a sentenc¸a: Nem todos os pa´ssaros podem voar. Escolhemos os seguintes predicados para expressar esta sentenc¸a: passaro(x): x e´ um pa´ssaro. voar(x): x pode voar. Esta sentenc¸a pode ser codificada da seguinte forma: ¬(∀x(passaro(x)→ voar(x))) Exemplo 9. Uma outra maneira de expressar a mesma ide´ia da sentenc¸a anterior e´ dizer que: Existem alguns pa´ssaros que na˜o podem voar. Esta u´ltima sentenc¸a pode ser codificada da seguinte maneira: ∃x(passaro(x) ∧ ¬voar(x)) Posteriormente veremos que as duas codificac¸o˜es dadas sa˜o semanticamente equivalentes. De fato, existem transformac¸o˜es que convertem uma na outra. 46 A lo´gica de primeira ordem: uma linguagem formal O vocabula´rio da lo´gica de primeira ordem consiste de treˆs conjuntos: 1. Um conjunto P de s´ımbolos de predicado; 2. Um conjunto F de s´ımbolos de func¸a˜o; 3. Um conjunto C de constantes. onde cada s´ımbolo de predicado e de func¸a˜o vem com sua aridade bem definida. Os predicados sa˜o casos especiais de func¸a˜o: enquanto as func¸o˜es possuem contra-domı´nio qualquer, os predicados teˆm contra-domı´nio sempre igual a {V, F}. As constantes sa˜o func¸o˜es de aridade 0. Definic¸a˜o 19. Termos sa˜o definidos da seguinte forma: 1. Qualquer varia´vel e´ um termo; 2. Se c ∈ F e´ uma func¸a˜o de aridade 0 enta˜o c e´ um termo; 3. Se t1, . . . , tn sa˜o termos e f ∈ F e´ uma func¸a˜o de aridade n > 0 enta˜o f(t1, . . . , tn) e´ um termo. 4. Nada mais e´ termo. Em BNF (Backus Naur form) temos: t ::= x | c | f(t, . . . , t) onde x percorre o conjunto de varia´veis V, c percorre os s´ımbolos de func¸a˜o de aridade 0 de F e f percorre os elementos de aridade maior do que 0 de F . Exemplo 10. Suponha que n, f e g sa˜o s´ımbolos de func¸a˜o de aridade respetivamente igual a 0, 1 e 2. Enta˜o g(f(n), n) e f(g(n, f(n))) sa˜o termos, mas g(n) e f(f(n), n) na˜o sa˜o termos por violarem as aridades dos s´ımbolos. A escolha dos conjuntos P e F para s´ımbolos de predicado e de func¸a˜o e´ definida a partir do que se pretende descrever. Definic¸a˜o 20. Definimos o conjunto de fo´rmulas sobre o conjunto S = (F ,P) indutivamente da seguinte forma: 1. Se p ∈ P e´ um s´ımbolo de predicado de aridade n > 0, e se t1, . . . , tn sa˜o termos sobre F enta˜o p(t1, . . . , tn) e´ uma fo´rmula. 2. Se φ e´ uma fo´rmula enta˜o (¬φ) e´ tambe´m uma fo´rmula. 3. Se φ e ψ sa˜o fo´rmulas enta˜o (φ ∧ ψ), (φ ∨ ψ), (φ→ ψ) e (φ↔ ψ) sa˜o fo´rmulas. 4. Se φ e´ uma fo´rmula e x e´ uma varia´vel enta˜o (∀xφ) e (∃xφ) tambe´m sa˜o fo´rmulas.5. Nada mais e´ fo´rmula. 47 Em BNF temos: φ ::= p(t1,. . ., tn) | (¬φ) | (φ ∧ φ) | (φ ∨ φ) | (φ→φ) | (φ↔ ψ) | (∀xφ) | (∃xφ) onde p e´ um s´ımbolo de predicado de aridade n > 0, ti sa˜o termos sobre F e x e´ uma varia´vel. Convenc¸a˜o 1. Adotaremos a seguinte prioridade de operadores: 1. ¬, ∀, ∃; 2. ∧,∨; 3. →,↔. Exemplo 11. Considere a seguinte sentenc¸a: Todo filho de meu pai e´ meu irma˜o. Podemos codificar esta fo´rmula de pelo menos duas formas distintas: 1. Representando a noc¸a˜o de “pai” como predicado: Neste caso escolhemos treˆs predicados: filho, pai e irmao com os seguintes significados e aridades: filho(x, y): x e´ filho de y pai(x, y): x e´ pai de y irmao(x, y): x e´ irma˜o de y. Uma poss´ıvel codificac¸a˜o para a sentenc¸a dada utilizando estes predicados e´: ∀x∀y(pai(x, joao) ∧ filho(y, x)→ irmao(y, joao)) dizendo que: “para todo x e todo y, se x e´ o pai de joao e se y e´ um filho de x enta˜o y e´ um irma˜o de joao”. Representando a noc¸a˜o de “pai” como func¸a˜o, que chamaremos de f : Neste caso, f(x) retorna o pai de x. Note que isto funciona apenas porque o pai de uma dado x e´ u´nico e esta´ sempre definido, e portanto f e´ realmente uma func¸a˜o. Uma poss´ıvel codificac¸a˜o para esta sentenc¸a e´ dada por: ∀x(filho(x, f(joao))→ irmao(x, joao)) significando que “para todo x, se x e´ um filho do pai de joao enta˜o x e´ um irmao de joao. Esta codificac¸a˜o e´ menos complexa que a anterior porque envolve apenas um quantificador. Especificac¸o˜es formais em geral exigem um domı´nio de conhecimento. Muitas vezes este co- nhecimento na˜o esta´ explicitado no domı´nio. Sendo assim, um especificador pode desconsiderar restric¸o˜es importantes para um modelo ou implementac¸a˜o. Por exemplo, as codificac¸o˜es dadas no exemplo anterior podem parecer corretas, mas e se x for igual a joao? Se o domı´nio de relac¸o˜es de parentesco na˜o e´ um conhecimento comum o especificador pode na˜o notar que uma pessoa na˜o pode ser irma˜o dela mesma. Definic¸a˜o 21. A abrangeˆncia de ∀x (respectivamente, ∃x) em ∀xφ (respectivamente, ∃xφ) e´ φ. Uma ocorreˆncia de uma varia´vel ligada numa fo´rmula ψ, e´ uma ocorreˆncia de uma varia´vel x, dentro do campo de abrangeˆncia de um quantificador ∀x ou ∃x. Uma ocorreˆncia de uma varia´vel livre e´ uma ocorreˆncia de uma varia´vel x na˜o ligada. 48 Exemplo 12. Na fo´rmula ∃x(p(f(x), y) → q(x)), as duas ocorreˆncias da varia´vel x sa˜o ligadas, enquanto a ocorreˆncia da varia´vel y e´ livre. Na fo´rmula ∃xp(f(x), y)→ q(x) a primeira ocorreˆncia da varia´vel x e´ ligada, no entanto a segunda e´ livre. Definic¸a˜o 22. Dada uma varia´vel x, um termo t e uma fo´rmula φ, definimos φ[x/t] como sendo a fo´rmula obtida apo´s substituir cada ocorreˆncia livre de x em φ por t. Exemplo 13. Considere novamente a fo´rmula ∀x((p(x)→ q(x)) ∧ s(x, y)), que chamaremos sim- plesmente de φ. Temos que φ[x/f(x, y)] = φ. De fato, todas as ocorreˆncias de x em φ sa˜o ligadas, e portanto a substituic¸a˜o [x/f(x, y)] na˜o tem nenhum efeito sobre esta fo´rmula. Exemplo 14. Agora considere a fo´rmula (∀x(p(x) ∧ q(x)))→ (¬p(x) ∨ q(y)) que chamaremos simplesmente de ψ. Neste caso temos uma ocorreˆncia livre de x e, portanto ψ[x/f(x, y)] e´ igual a (∀x(p(x) ∧ q(x)))→ (¬p(f(x, y)) ∨ q(y)) As substituic¸o˜es podem produzir efeitos colaterais indesejados: Considere o termo f(x, y) e a fo´rmula ∀y(p(x, y)). Enta˜o (∀y(p(x, y)))[x/f(x, y)] resulta na fo´rmula (∀y(p(f(x, y), y))) se fizermos uma substituic¸a˜o “ingeˆnua”. Observe que o termo resultante possui uma semaˆntica diferente da esperada porque a varia´vel y do termo f(x, y) na˜o corresponde a varia´vel y quantificada universalmente na fo´rmula dada. Como resolver este problema? Definic¸a˜o 23. Dados um termo t, uma varia´vel x e uma fo´rmula φ, dizemos que t e´ livre para x em φ se nenhuma ocorreˆncia livre de x em φ esta´ no escopo de ∀y ou ∃y para qualquer varia´vel y que ocorra em t. Exemplo 15. Considere a fo´rmula s(x) ∧ ∀y(p(x) → q(y)), que possui duas ocorreˆncias livres de x. A ocorreˆncia de x mais a esquerda poderia, por exemplo, ser substitu´ıda pelo termo f(y, y), no entanto a outra ocorreˆncia na˜o poderia ser substitu´ıda por este termo porque tal substituic¸a˜o acarretaria captura da varia´vel y. Quando precisamos realizar uma substituic¸a˜o de um termo t que na˜o esta´ livre para uma varia´vel x em uma fo´rmula φ, o que fazemos e´ renomear as varia´veis ligadas para evitar capturas: Exemplo 16. No caso do exemplo anterior, a substituic¸a˜o de x por f(y, y) em s(x) ∧ ∀y(p(x) → q(y)) pode ser resolvida renomeando a varia´vel ligada y da fo´rmula para algum nome novo, por exemplo w: s(x) ∧ ∀w(p(x)→ q(w)). Agora a substituic¸a˜o pode ser realizada sem provocar captura de varia´veis. 49 50 Cap´ıtulo 11 Deduc¸a˜o Natural na Lo´gica de Primeira Ordem Deduc¸a˜o Natural As provas a serem realizadas na lo´gica de primeira ordem (LPO) sa˜o semelhantes a`quelas realizadas no ca´lculo proposicional, exceto que agora precisamos de novas regras para lidar com quantificadores e com o s´ımbolo de igualdade. Vamos iniciar enta˜o com uma regra para a igualdade. A igualdade que definiremos aqui na˜o e´ a igualdade sinta´tica, mas a igualdade em termos do resultado de uma computac¸a˜o. A igualdade neste sentido tambe´m nos permite concluir que um termo e´ igual a ele mesmo, e esta noc¸a˜o e´ expressa pela seguinte regra: t = t (=i) esta regra representa um axioma ja´ que na˜o depende de nenhuma premissa. A regra (= i) so´ pode ser utilizada para termos, ja´ que a linguagem da LPO na˜o nos permite falar em igualdade de fo´rmulas. A regra (= i) na˜o e´ muito u´til por si so´. O que precisamos e´ de um mecanismo que nos permita substituir iguais por iguais. Por exemplo, suponha que y ∗ (w+2) seja igual a y ∗w+ y ∗ 2 enta˜o certamente e´ o caso que z ≥ y ∗ (w+2) implica que z ≥ y ∗w+ y ∗ 2. Podemos expressar este princ´ıpio de substituic¸a˜o pela seguinte regra: t1 = t2 φ[x/t1] φ[x/t2] (=e) Para aplicar a regra (= e), precisamos que os termos t1 e t2 sejam livres para x em φ. Sempre que escrevermos φ[x/t] assumimos que t e´ livre para x em φ, pois caso contra´rio esta substituic¸a˜o na˜o tem sentido. O princ´ıpio da substituic¸a˜o juntamente com as regras para igualdade ja´ formam um conjunto particularmente poderoso. Por exemplo, com estas regras podemos provar os seguintes sequentes: 1. t1 = t2 ` t2 = t1 2. t1 = t2, t2 = t3 ` t1 = t3 Prova de t1 = t2 ` t2 = t1: 51 1 t1 = t2 premissa 2 t1 = t1 (= i) 3 t2 = t1 (= e) 1, 2 onde φ e´ x = t1, e portanto na linha 2 temos φ[x/t1]. Note que a representac¸a˜o φ[x/t1] na˜o aparece explicitamente na prova. De fato, o que aparece nas provas e´ a fo´rmula que se obte´m apo´s realizar a substituic¸a˜o. No caso do exemplo anterior, φ[x/t1] corresponde a (x = t1)[x/t1] de onde se obte´m t1 = t1 que aparece na linha 2 da prova anterior. Prova de t1 = t2, t2 = t3 ` t1 = t3: 1 t2 = t3 premissa 2 t1 = t2 premissa 3 t1 = t3 (= e)1, 2 onde φ e´ t1 = x, e portanto na linha 2 temos φ[x/t2]. Regras para a Quantificac¸a˜o Universal A regra para a eliminac¸a˜o do quantificador ∀ e´ dada por: ∀xφ φ[x/t] (∀xe) Esta regra nos diz que se ∀xφ e´ verdadeiro, enta˜o podemos substituir x por qualquer termo t (que seja livre para x em φ), e o resultado φ[x/t] continua sendo verdadeiro. Exemplo 17. Vejamos que a condic¸a˜o de que t seja livre para x em φ e´ essencial na regra (∀xe). Suponha que φ tenha a forma ∃y(x < y), onde pretendemos substituir x por y. Vamos supor que nosso domı´nio de interpretac¸a˜o seja o dos nu´meros inteiros com a relac¸a˜o usual de “menor que”. A fo´rmula ∀xφ, i.e., ∀x(∃y(x < y)), nos diz que para todo inteiro x, existe um outro inteiro y maior do que x, o que de fato e´ verdade. No entanto, (sem fazer renomeamentos) a fo´rmula φ[x/y] e´ igual a∃y(y < y) que nos diz que existe um inteiro que e´ maior do que ele mesmo, que naturalmente e´ falso. Para contornar este problema poder´ıamos renomear a varia´vel ligada y de φ para posteriormente fazer a substituic¸a˜o. A regra para a inclusa˜o da quantificac¸a˜o universal e´ um pouco mais complicada: x0 ... φ[x/x0] ∀xφ (∀xi) Aqui utilizamos caixas novamente, mas neste caso uma caixa serve para estipular o escopo da varia´vel x0 mais do que o escopo de uma hipo´tese. Esta regra nos diz que: se iniciando com uma varia´vel “nova” x0, conseguirmos provar que φ[x/x0] enta˜o como x0 e´ uma varia´vel arbitra´ria podemos concluir ∀xφ. Ale´m disto, nenhuma hipo´tese dentro da caixa pode depender de x0. De fato, se p(x) e´ uma predicado significando “x e´ positivo”, ao tomarmos por exemplo, como hipo´tese p(x0) estamos considerando que “x0 e´ positivo” o que tira o seu caracter arbitra´rio. 52 O importante na regra (∀xi) e´ que a varia´vel x0 deve realmente ser “nova” (fresh) e portanto na˜o pode ocorrer em nenhum lugar fora da caixa. Neste sentido x0 pode ser pensado como um termo arbitra´rio, e esta prova funciona com qualquer outro termo que coloquemos no lugar de x. Desta forma podemos concluir ∀xφ. Exemplos 5. • p(t),∀x(p(x)→ ¬q(x)) ` ¬q(t). • ∀x(p(x)→ q(x)), ∀xp(x) ` ∀xq(x). Regras para a Quantificac¸a˜o Existencial A regra de inclusa˜o do quantificador existencial e´ dada por: φ[x/t] ∃xφ (∃xi) Esta regra nos diz que podemos deduzir ∃xφ sempre que tivermos φ[x/t] para algum termo t (que seja livre para x em φ). Do ponto de vista computacional a regra (∃xi) nos diz mais do que simplesmente ∃xφ. De fato, a fo´rmula ∃xφ expressa o fato de que existe um valor (na˜o especificado) de x para o qual a fo´rmula φ vale, enquanto que φ[x/t] nos da´ explicitamente uma testemunha t para tal fato. A fo´rmula para eliminac¸a˜o da quantificac¸a˜o existencial e´ dada por: ∃xφ x0 φ[x/x0] ... χ χ (∃xe) Esta regra nos diz que: sabendo que ∃xφ e´ verdadeiro, temos que φ e´ verdadeira para pelo menos um “valor” de x. Enta˜o o que fazemos e´ analisar todos os poss´ıveis valores de x, denotando por x0 um valor arbitra´rio de x. Se a partir de φ[x/x0] podemos provar χ sem mencionar x0, enta˜o χ sera´ verdadeira sempre que o valor x0 fizer com que φ[x/x0] seja verdadeira. Na regra (∃xe) exigimos que x0 na˜o aparec¸a fora da caixa, em particular, x0 na˜o pode ocorrer em χ. Neste caso, a caixa esta´ controlando duas coisas: 1. o escopo de x0; 2. o escopo da hipo´tese φ[x/x0]. Exemplo 18. Provar a validade do sequente: ∀xφ ` ∃xφ. 1 ∀xφ premissa 2 φ[x/x] (∀xe), 1 3 ∃xφ (∃xi), 2 Exemplos 6. • ∀x(p(x)→ q(x)), ∃xp(x) ` ∃xq(x). • ∀x(p(x)→ q(x)), ∃x(r(x) ∧ p(x)) ` ∃x(r(x) ∧ q(x)). • ∃xp(x), ∀x∀y(p(x)→ q(y)) ` ∀yq(y). 53 Equivaleˆncias Nesta sec¸a˜o vamos estabelecer as equivaleˆncias entre os quantificadores que sa˜o mais utilizadas. Algumas delas possuem mais de um quantificador, e portanto este to´pico vai ser u´til para adqui- rirmos pra´tica na manipulac¸a˜o de quantificadores aninhados. Por exemplo, a fo´rmula ∀x∀yφ deve ser equivalente a ∀y∀xφ ja´ que ambas dizem que φ deve valer para todos os valores de x e y.Mas o que dizer, por exemplo, sobre (∀xφ) ∧ (∀xψ) e ∀x(φ ∧ ψ)? Considere a sentenc¸a: “Nem todos os pa´ssaros podem voar” como ¬∀x(passaro(x)→ voar(x)) e ∃x(passaro(x) ∧ ¬voar(x)) As equivaleˆncias lo´gicas nos ajudara˜o a estabelecer especificac¸o˜es que sa˜o aparentemente diferentes, mas que dizem a mesma coisa. A seguir apresentaremos algumas equivaleˆncias com as quais voceˆ deve se familiarizar. Escreveremos φ1 ≡ φ2 como uma abreviac¸a˜o para a validade dos sequentes φ1 ` φ2 e φ2 ` φ1. Teorema 6. Sejam φ e ψ fo´rmulas da lo´gica de primeira ordem. Valem as seguintes equivaleˆncias: 1. (a) ¬∀xφ ≡ ∃x¬φ (b) ¬∃xφ ≡ ∀x¬φ 2. Assumindo que x na˜o ocorra livre em ψ: (a) (∀xφ) ∧ ψ ≡ ∀x(φ ∧ ψ) (b) (∀xφ) ∨ ψ ≡ ∀x(φ ∨ ψ) (c) (∃xφ) ∨ ψ ≡ ∃x(φ ∨ ψ) (d) (∃xφ) ∨ ψ ≡ ∃x(φ ∨ ψ) (e) ∀x(ψ → φ) ≡ ψ → ∀xφ (f) ∃x(φ→ ψ) ≡ (∀xφ)→ ψ (g) ∀x(φ→ ψ) ≡ (∃xφ)→ ψ (h) ∃x(ψ → φ) ≡ ψ → ∃xφ 3. (a) ∀xφ ∧ ∀xψ ≡ ∀x(φ ∧ ψ) (b) ∃xφ ∨ ∃xψ ≡ ∃x(φ ∨ ψ) 4. (a) ∀x∀yφ ≡ ∀y∀xφ (b) ∃x∃yφ ≡ ∃y∃xφ Exerc´ıcios 1. Prove a validade dos seguintes sequentes: (a) (y = 0) ∧ (y = x) ` 0 = x (b) t1 = t2 ` (t+ t2) = (t+ t1) 54 (c) (x = 0) ∨ ((x+ x) > 0) ` (y = (x+ x))→ ((y > 0) ∨ (y = (0 + x))) 2. Prove a validade dos seguintes sequentes: (a) ∀xp(a, x, x),∀x∀y∀z(p(x, y, z)→ p(f(x), y, f(z))) ` p(f(a), a, f(a)) (b) ∀xp(a, x, x),∀x∀y∀z(p(x, y, z)→ p(f(x), y, f(z))) ` ∃zp(f(a), z, f(f(a))) (c) ∀yq(b, y), ∀x∀y(q(x, y)→ q(s(x), s(y))) ` ∃z(q(b, z) ∧ q(z, s(s(b)))) (d) ∀x∀y∀z(s(x, y) ∧ s(y, z)→ s(x, z)),∀x¬s(x, x) ` ∀x∀y(s(x, y)→ ¬s(y, x)) (e) ∀x(p(x) ∨ q(x)), ∃x¬q(x), ∀x(r(x)→ ¬p(x)) ` ∃x¬r(x) (f) ∀x(p(x)→ (q(x) ∨ r(x))),¬∃x(p(x) ∧ r(x)) ` ∀x(p(x)→ q(x)) (g) ∃x∃y(s(x, y) ∨ s(y, x)) ` ∃x∃ys(x, y) (h) ∃x(p(x) ∧ q(x)), ∀x(p(x)→ r(x)) ` ∃x(r(x) ∧ q(x)) 3. Construa uma prova para cada sequente dado no exerc´ıcio anterior no ProofWeb. 55 56 Cap´ıtulo 12 Semaˆntica da Lo´gica de Primeira Ordem Estruturas Estruturas aparecem em matema´tica rotineiramente. Por exemplo, um grupo e´ um conjunto na˜o- vazio equipado com duas operac¸o˜es, sendo uma bina´ria, uma una´ria e com um elemento neutro que satisfaz certas leis. A seguir definiremos formalmente o que sa˜o estruturas, mas iniciaremos com a definic¸a˜o de relac¸a˜o: Definic¸a˜o 24. Uma relac¸a˜o R n-a´ria (n ≥ 0) sobre um conjunto na˜o-vazio A e´ um subconjunto de An. Definic¸a˜o 25. Uma estrutura A sobre o conjunto S = (F ,P) (de s´ımbolos de func¸a˜o e de relac¸a˜o) e´ um par (A, a) com as seguintes propriedades: 1. A e´ um conjunto na˜o-vazio chamado de universo ou domı´nio de A. 2. a e´ uma func¸a˜o definida sobre o conjunto S satisfazendo as seguintes propriedades: (a) para cada constante (func¸a˜o da aridade 0), f ∈ F , associamos um elemento concreto a(f) de A; (b) para cada s´ımbolo de func¸a˜o f ∈ F de aridade n > 0, a(f) e´ uma func¸a˜o An para A; (c) para cada s´ımbolo de relac¸a˜o (predicado) p ∈ P de aridade n > 0, a(p) e´ uma relac¸a˜o n-a´ria em A, ou seja, um subconjunto de An. Ao inve´s de a(p), a(f) escreveremos, respectivamente, pA, fA. Uma estrutura A = (A, a) sobre os conjuntos F = {f1, . . . , fn} e P = {p1, . . . , pm} sera´ escrita na forma A = (A, pA1 , . . . , pAm, fA1 , . . . , fAn ). Exemplos 7. 1. (R,+, ·, −1, 0, 1) - o corpo dos nu´meros reais. 2. (N,≤) - o conjunto ordenado dos nu´meros naturais. 3. (Z, <,+,−, 0) - o grupo ordenado dos nu´meros inteiros (com a soma usual). Observe que, neste caso − e´ uma func¸a˜o una´ria, enquanto que + e´ bina´ria. 57 4. (Q, ·, −1, 1) - o grupo (abeliano) dos nu´meros racionais (com a multiplicac¸a˜o usual). 5. (Z,+, ·, −1, 0, 1) - o anel dos nu´meros inteiros. Observac¸a˜o 1. Notac¸a˜o: |A| = A, o universo de A. A estrutura A e´ dita (in)finita se o seu universo e´ (in)finito. Definic¸a˜o 26. Uma func¸a˜o de atribuic¸a˜o (ou designac¸a˜o) em uma estrutura A e´ uma func¸a˜o l : var → A. Denotaremos por l[x 7→ a] a func¸a˜o de atribuic¸a˜o que leva x em a e qualquer outro valor y e´ levado em l(y). Definic¸a˜o 27. Uma interpretac¸a˜o I e´ um par (A, i), onde A e´ uma estrutura e i e´ uma designac¸a˜o. Exemplo 19. Por exemplo, se a interpretac¸a˜o I = (A, i) e´ tal que A = (N, <,+, ·, 0, 1) e i(vn) = 2n enta˜o a fo´rmula v2 · (v1 + v2) = v4 e´ lida como 4 · (2 + 4) = 8. Ja´ a fo´rmula ∀v0∃v1(v0 < v1) e´ lida como “para todo nu´mero natural v0 existe um nu´mero natural v1 maior do que v0”. Exerc´ıcios 1. Considere a interpretac¸a˜o I dada no exemplo anterior. Como as fo´rmulas a seguir sa˜o lidas com esta interpretac¸a˜o? (a) ∃v0(v0 + v0 = v1) (b) ∃v0(v0 · v0 = v1) (c) ∃v1(v0 = v1) (d) ∀v0∃v1(v0 = v1) (e) ∀v0∀v1∃v2(v0 < v1 ∧ v2 < v1) Modelos A noc¸a˜o de satisfac¸a˜o
Compartilhar