Pensamentos introdutórios acerca de Lógica (pt. 1)

A Lógica é uma área da Filosofia que estuda as possíveis deduções e inferências a partir de proposições ou argumentos lógicos, conforme regras e princípios pré-estabelecidos. Em outras palavras, é o estudo sistemático de proposições.

Aristóteles é o pai da Lógica, tendo a criado em cerca de 300 a.C.. A lógica criada por Aristóteles é chamada de Lógica Aristotélica a qual tem por base o silogismo – um tipo de raciocínio formalizado em que uma proposição C é deduzida através de outras proposições A e B. A Lógica Aristotélica, na verdade, é realizada de forma inteiramente verbal. De fato, a notação para Lógica só foi estabelecida em 1879 com a publicação do livro Begriffsschrift de Gottlob Frege, juntamente com a apresentação de um sistema formal. A notação utilizada atualmente segue, em sua maior parte, aquela descrita na gigantesca obra Principia Mathematica, de Bertrand Russell e Alfred North Whitehead.

Embora existam diversos tipos de lógicas, como fuzzy, modal, quântica, clássica…; iremos focar na lógica clássica, em que proposições são estritamente verdadeiras ou falsas, e inicialmente no Cálculo Proposicional (CP). O CP é a lógica que estuda proposições quanto a seus valores-verdade e formações de outras proposições através de conectivos lógicos. Iremos definir todos esses conceitos a seguir.

Dentro do contexto do CP, fórmulas atômicas são proposições. Por exemplo, frases como “o dia está ensolarado”, “o carro é azul” e “Brasil é uma cidade” são fórmulas atômicas, portanto preposições. Usualmente as fórmulas atômicas são denotadas por V_i, em que i é um natural, e são chamadas de variáveis. Note que o valor-verdade das fórmulas atômicas (verdadeiras ou falsas) não interfere em sua classificação como fórmulas atômicas, mas sim a ausência de subfórmulas e conectivos lógicos. Conectivos lógicos, por sua vez, são símbolos do CP que correspondem a algumas palavras da linguagem natural. O CP tem os seguintes conectivos lógicos:

  • \lnot – corresponde à negação, “não”;
  • \land – corresponde a  “e”;
  • \lor – corresponde a “ou”;
  • \longrightarrow – corresponde a “implica”;
  • \longleftrightarrow – corresponde a “se e somente se” ou “sse”.

Adicionalmente, o alfabeto do CP contém os símbolos ( e ), os quais podem alterar a precedência de conectivos lógicos. Para minimizar o número de definições, podemos chamar \lnot e \land de conectivos lógicos primitivos e definir os outros a partir deles. Fórmulas ou proposições podem ser definidas indutivamente da seguinte maneira:

  • Uma variável é uma fórmula;
  • Se A é uma fórmula, \lnot A é fórmula;
  • Se A e B são fórmulas, (A \land B) é fórmula;
  • Fórmulas são construídas de acordo com as regras acima.

Para definir os conectivos lógicos quanto a semântica, precisamos introduzir os conceitos de tabelas-verdade e equivalências lógicas. Tabelas-verdades são tabelas que mapeiam todos os possíveis valores-verdade de uma fórmula de acordo com os valores-verdade de suas sub-fórmulas. Por exemplo, vamos escrever a tabela verdade da (meta)fórmula \neg A:

A \neg A
V F
F V

Observe que a tabela-verdade contém todos os possíveis valores de A – 0 ou 1, verdadeiro ou falso -, e os respectivos valores da fórmula \neg A. Se A é verdadeiro, \neg A é falso e vice-versa. Podemos escrever a tabela-verdade de (A \land B):

A B A \land B
F F F
F V F
V F F
V V V

A tabela-verdade A \land B reflete o significado da fórmula na linguagem natural, ou seja, a fórmula só é verdadeira quando ambas as sub-fórmulas A e B são verdadeiras. Novamente a tabela-verdade precisa conter todas as possibilidades dos valores-verdades das sub-fórmulas.

Finalmente, podemos definir o conceito de equivalência lógica. Duas fórmulas A e B são logicamente equivales se elas têm a mesma tabela verdade. Representamos essa característica entre as fórmulas através do símbolo \equiv. A \equiv B significa “A é logicamente equivalente a B“. Vamos escrever algumas equivalências lógicas que nos permitem definir os outros conectivos lógicos:

  • (A \lor B) \equiv (\neg (\neg A \land \neg B)),
  • (A \longrightarrow B) \equiv (\neg A \lor B),
  • (A \longleftrightarrow B) \equiv ((A \longrightarrow B) \land (B \longrightarrow A)).

Construindo as tabelas-verdade, podemos verificar que (A \lor B) é verdadeiro quando A ou B são verdadeiros, sem exclusão; (A \longrightarrow B) é verdadeiro quando A é falso ou A e B são verdadeiros; (A \longleftrightarrow B) é verdadeiro quando ambos A e B têm o mesmo valor-verdade. A verificação das tabelas-verdade fica como exercício ao leitor (sugestão: fazer uma coluna para cada sub-fórmula).

A tabela-verdade do conectivo lógico \longrightarrow pode ser uma fonte de confusão inicialmente, pois se a premissa da implicação é falsa, a implicação como um todo é verdadeira ou “válida”. Alonzo Church, em seu livro Introduction to Mathematical Logic, vol. I dedicou a 89ª nota de rodapé e meia página para explicar que se trata de uma implicação materialística e a razão disso. Devemos ter em mente que se alguma premissa é falsa, não importa qual é a conclusão, pois é como se considerássemos um universo em que a premissa é verdadeira. Por exemplo, considere a implicação “se unicórnios existem, então a lua é de queijo”: se unicórnios de fato existissem, não haveria problema nenhum em concluir que a lua é de queijo, portanto a implicação é válida no CP mas talvez não em nosso universo. A frase é logicamente equivalente, dentro do CP, a “unicórnios não existem ou a lua é de queijo” – como unicórnios não existem, a fórmula é verdadeira. Vamos ver outro exemplo, “se unicórnios não existem, a lua é de queijo”: como unicórnios de fato não existem no nosso universo, precisamos levar em consideração a conclusão da implicação. A lua obviamente não é de queijo, logo concluímos a implicação é falsa. Utilizando a equivalência lógica, podemos reescrever a implicação como “unicórnios existem ou a lua é de queijo” e observamos que nenhuma das duas proposições é verdadeira, então a implicação é realmente falsa. Esse aspecto das implicações é frequentemente a raiz de diversos erros em demonstrações matemáticas. Se a premissa é falsa, então pode-se concluir qualquer coisa a partir dela. “Demonstrações” de 0 = 1 quase sempre utilizam de alguma premissa falsa e obtêm conclusões a partir dela (e.g. a premissa de que \frac{0}{0} = 1).

Para facilitar a leitura de fórmulas lógicas e reduzir o número de parênteses, podemos utilizar a seguinte ordem de precedência dos conectivos lógicos:

\neg > \land > \lor > \longrightarrow > \longleftrightarrow.

Se uma fórmula \phi é verdadeira em pelo menos uma das linhas de sua tabela verdade, dizemos que \phi é satisfazível. Verificar a satisfabilidade de uma fórmula não é uma tarefa trivial. Se \phi for composta por n sub-fórmulas atômicas (ou literais), temos que construir uma tabela-verdade com 2^n linhas, mas cada linha corresponde a um valor-verdade de \phi, que pode ser V ou F. Logo temos que verificar 2^{2^n} possíveis valores. De fato, esse problema é conhecido como o Problema da Satisfabilidade Booleana ou simplesmente SAT, e foi um dos primeiros a ser considerado NP-completo.

A partir da introdução formal acima, vamos formalizar as noções de satisfabilidade. Considere um conjunto \mathscr{S} = \{A_1, \ldots, A_n\} de n fórmulas atômicas. Seja \mathscr{F}(\mathscr{S}) o conjunto de todas as fórmulas que podem ser formadas a partir daquelas em \mathscr{S}. Definimos a função de atribuição como \mathscr{A} : \mathscr{S} \rightarrow \{\mathrm{V,F}\} e, através dela, atribuímos valores-verdade às fórmulas. Uma fórmula \phi é satisfazível se existe alguma função de atribuição \mathscr{A} tal que \mathscr{A}(\phi) = \mathrm{V}. Usualmente escrevemos \mathscr{F} \models \phi (lê-se “\mathscr{F} modela \phi“). Se \phi é satisfazível independentemente de \mathscr{F}, dizemos que \phi é uma tautologia; se \phi é insatisfazível, dizemos que \phi é uma contradição. Representamos tautologias por \models \phi e contradições por \not \models \phi. O exemplo de tautologia mais simples é \neg A \lor A ou  \neg A \longrightarrow A.

Uma fórmula \psi é consequência de outra fórmula \phi se \mathscr{A} \models \phi e \mathscr{A} \models \psi, em que \mathscr{A} é uma função atribuição. Escrevemos \phi \models \psi para denotar esse fato. Retomando o conceito de equivalência lógica, \phi \equiv \psi se e somente se \phi \models psi e \psi \models \phi.

Vamos apresentar algumas regras do CP envolvendo tautologias e equivalências lógicas:

  • Para quaisquer fórmula \phi e tautologia \top, (\phi \land \top) \equiv \phi e (\phi \lor \top) \equiv \top;
  • Para quaisquer fórmula \phi e contradição \bot, (\phi \land \bot) \equiv \bot e (\phi \lor \bot) \equiv \phi;
  • (\phi \land \psi) \equiv (\psi \land \phi);
  • (\phi \lor \psi) \equiv (\psi \lor \phi);
  • (\phi \longrightarrow \psi) \equiv (\neg \psi \longrightarrow \neg \phi);
  • (\phi \longleftrightarrow \psi) \equiv (\psi \longleftrightarrow \phi);
  • (\phi \land (\psi \lor \chi)) \equiv (\phi \land \psi \lor \phi \land \chi);
  • (\phi \lor (\psi \land \chi)) \equiv ((\phi \lor \psi) \land (\phi \lor \chi));
  • \neg (\phi \lor \psi) \equiv (\neg \phi \land \neg \psi);
  • \neg (\phi \land \psi) \equiv (\neg \phi \lor \neg \psi).

Por fim, dizemos que uma função de atribuição \mathscr{A} satisfaz um conjunto de fórmulas \mathscr{F} = \{A_1, \ldots, A_n\} se \mathscr{A} \models A_i para cada A_i \in \mathscr{F}.

Com este post, concluímos a parte semântica do CP em sua essência. Por enquanto não é possível fazer nada além de checar a satisfabilidade de uma fórmula e utilizar equivalências lógicas para simplificar fórmulas. A parte 2 dessa série de posts sobre Lógica irá discursar sobre a construção de fórmulas a partir de tabelas-verdade, a sintaxe do CP, um pouco sobre teoria de demonstrações ou provas, formas normais de fórmulas, dois teoremas que relacionam a sintaxe com a semântica do CP e algoritmos que verificam a satisfabilidade de fórmulas.

Para ilustrar uma aplicação prática porém um pouco infantil do CP até agora – resolver analiticamente os famosos “problemas de lógica”, como o famigerado Teste de Einstein. Obviamente o teste não foi proposto por Einstein e não apenas 2% da população mundial é capaz de resolvê-lo, mas ele é facilmente resolvido com auxílio de um computador e a transformação das dicas fornecidas em fórmulas do CP.


Hedman, S. (2004). A first course in logic : an introduction to model theory, proof theory, computability, and complexity. Oxford New York: Oxford University Press.

Rautenberg, W. (2010). A concise introduction to mathematical logic. New York: Springer.

Oliveira, J. G. de (2016). Lógica para Computação. Sorocaba: Universidade Federal de São Carlos.

2 thoughts on “Pensamentos introdutórios acerca de Lógica (pt. 1)

Leave a comment