✖

Exemplos de lógica proposicional

Neste artigo, vamos mostrar algumas fórmulas e as suas possíveis atribuições por meio da tabela-verdade.

Primeiro exemplo

Vamos tentar descobrir quando esta fórmula é verdadeira: ϕ = (p ∧ q) ∨ ¬q. Escrevemos na tabela as variáveis proposicionais p e q:

pq11100100

Depois, acrescentamos à tabela a primeira parte da fórmula: (p ∧ q), a negação ¬q e, por fim, a fórmula inteira:

pqp∧q¬qϕ11100100

Agora calculamos os valores da terceira coluna, que é uma conjunção simples, e também da negação; nela, basta colocar os valores invertidos em relação aos da segunda coluna:

pqp∧q¬qϕ1110100101000001

Por fim, calculamos os valores da última coluna. Ela é a fórmula inteira. De acordo com a nossa tabela, calculamos a disjunção “entre a terceira e a quarta coluna”. Resultado:

pqp∧q¬qϕ11101100110100000011

Segundo exemplo

Mesmo enunciado, outra fórmula: ϕ = (p ∧ ¬q) ⇔ (¬p ⇒ q). Vemos que na fórmula aparecem as variáveis proposicionais p e q e as suas negações. Então, primeiro criamos uma tabela com os dois símbolos e as suas negações:

pq¬p¬q1100100101100011

Depois, acrescentamos as fórmulas p ∧ ¬q e ¬p ⇒ q, que já sabemos avaliar facilmente, porque temos na tabela tanto as atribuições das proposições individuais quanto as das suas negações. A tabela fica assim:

pq¬p¬q(p∧¬q)(¬p⇒q)110001100111011001001100

Por último, resta avaliar a fórmula inteira, que é a equivalência entre as duas últimas colunas:

pq¬p¬q(p∧¬q)(¬p⇒q)ϕ1100010100111101100100011001

Terceiro exemplo

O terceiro exemplo será um pouco mais complicado: vamos tentar três variáveis proposicionais, o que torna o cálculo da tabela mais trabalhoso. A fórmula será esta: ϕ = (¬(p ⇒ q)) ∧ (r ⇔ (¬p ∨ q)).

Como temos três variáveis proposicionais, o número total de atribuições possíveis é igual a oito:

pqr111110101100011010001000

Daqui em diante, procedemos como no caso anterior: avaliamos cada colunazinha nas oito linhas. A tabela inteira ficará assim:

pqr¬p(p⇒q)(¬p∨q)¬(p⇒q)(r⇔(¬p∨q))ϕ111011010110011000101000100100000111011111010010111000001111010000111000

Quarto exemplo

Este exemplo já não será dado como uma fórmula comum, mas como um problema em palavras. Três amigos que querem ir a uma festa animada, onde modelos de topless vão servir petiscos, não gostam muito uns dos outros e impõem condições para ir à festa. Os nomes deles são Marcos, João e Pedro. As regras são as seguintes:

  1. Se Marcos for, então João também vai.
  2. Na festa aparece Pedro ou, se Marcos for, então João não vai.
  3. Pedro aparece se, e somente se, Marcos não aparecer ou João não aparecer.

A pergunta é: todos podem ir à festa? Se não, quem pode ir à festa sem quebrar nenhuma regra?

Primeiro, precisamos reescrever as frases anteriores em variáveis proposicionais e fórmulas. Vamos chamar as variáveis proposicionais de M, J e P (Marcos, João, Pedro), e cada uma sempre significará uma proposição do tipo “Marcos vai à festa”. A primeira regra poderia ser reescrita assim: M ⇒ J — “se M, então J”, ou seja, “se Marcos for à festa, então João vai à festa”.

Reescrevemos a segunda regra assim. A regra começa com a frase “Na festa aparece Pedro ou…”, então evidentemente vamos precisar de uma disjunção. Por enquanto, escrevemos isto: P ∨ … A parte seguinte da frase diz: “se Marcos for, então João não vai”. Isso é uma implicação, em que, do lado direito, ainda precisamos usar uma negação. “João não vai” = ¬J. A implicação inteira ficaria assim: M ⇒ ¬J. Juntamos isso à disjunção anterior: P ∨ (M ⇒ ¬J).

Reescrevemos a terceira regra assim: começamos com “Pedro aparece se, e somente se”. Isso significa uma equivalência: P ⇔ … Depois temos “Marcos não aparece ou João não aparece”, que reescrevemos assim: ¬M ∨ ¬J. Montamos tudo: (P ⇔ (¬M ∨ ¬J)).

Agora colocamos todas as fórmulas na tabela e calculamos os valores:

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))111110110101101011100010011111010110001111000110

A pergunta era se os três rapazes podem ir à festa animada. Encontramos a resposta na primeira linha. Ela corresponde ao caso em que todos os rapazes vão — isso é indicado pelos três uns nas três primeiras colunas. Todas as condições são satisfeitas? A primeira sim (quarta coluna), a segunda também (quinta coluna), mas a última não (última coluna), ali há um zero. Isso significa que, se os três forem, a terceira condição não será satisfeita.

Procuramos, então, as linhas em que, nas posições que representam as condições (ou seja, nas três últimas colunas), há só uns. O um significa que a condição é satisfeita. Vemos que isso acontece em dois casos: quando João e Pedro vão, mas Marcos não, e quando vai só Pedro.

Você também pode calcular isso acrescentando à tabela a fórmula ϕ, que será a conjunção das três condições. Assim, ela ficará desta forma: ϕ = ((M ⇒ J) ∧ (P ∨ (M ⇒ ¬J)) ∧ (P ⇔ (¬M ∨ ¬J))). Isso representa o que queremos: que todas as fórmulas (todas as condições) sejam satisfeitas. A tabela ficaria então assim:

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))ϕ11111001101010101011010001000111111010110000111110001100

Alguns exemplos de tabela-verdade

Como escrevi um programa que sabe montar automaticamente a tabela inteira a partir de uma fórmula dada, preciso aproveitá-lo como se deve, e por isso seguem mais algumas fórmulas resolvidas:

Fórmula: ((a ∧ ¬b) ∨ (b ∧ (b ⇒ a))). Tabela:

ab(a∧¬b)(b∧(b⇒a))((a∧¬b)∨(b∧(b⇒a)))11011101010100000000

Fórmula: (a ∨ ¬a) ⇔ (b ∧ ¬b). Tabela:

ab(a∨¬a)(b∧¬b)((a∨¬a)⇔(b∧¬b))11100101000110000100

Fórmula: ¬(a ∨ b) ⇔ (¬b ∧ ¬a). Tabela:

ab¬(a∨b)(¬b∧¬a)(¬(a∨b)⇔(¬b∧¬a))11001100010100100111

Fórmula: ϕ = (¬p ⇔ (q ∧ r)) ⇒ (p ∨ ¬(p ∧ q)). Tabela:

pqr(q∧r)¬(p∧q)(¬p⇔(q∧r))(p∨¬(p∧q))ϕ1111001111000111101011111000111101111111010010110010101100001011

Fórmula: ϕ = ¬(p ⇔ ¬q) ∧ (r ⇒ ¬p) ∧ (p ∨ r). Tabela:

pqr¬(p⇔¬q)(r⇒¬p)(p∨r)ϕ11110101101111101001010001100110110010010000111110001100

Capítulos: Lógica proposicional, Valor lógico das fórmulas, Exemplos de lógica proposicional