Lógica Computacional 1
Turma B
- lc1-2019-1 lc1-2020-1 incluir os outros arquivos lc1-…
- Referência principal: cite:ayala-rinconAppliedLogicComputer2017 Referências complementares: cite:iiiGuideTeachingPuzzlebased2014
Desafio lógico 1 (cite:smullyanLogicalLabyrinths2009)
Considere um ilha onde moram apenas dois tipos de pessoas:
- Honestas: que sempre falam a verdade;
- Desonestas: que sempre mentem.
Um viajante, ao passar por esta ilha, encontra três moradores chamados \(A\), \(B\) e \(C\). O viajante então pergunta para o morador \(A\): "Você é honesto ou desonesto?" \(A\) responde algo incompreensível, e o viajante pergunta para \(B\): "O que ele disse?" \(B\) então responde: "Ele disse que é desonesto". Neste momento \(C\) se manifesta: "Não acredite nisto! Isto é uma mentira!"
Questão: \(C\) é honesto ou desonesto?
Solução:
Inicialmente, observe que se um morador diz que é desonesto então obtemos uma contradição: de fato, se um morador honesto diz "eu sou desonesto" então estaria mentindo e seria desonesto. Por outro lado, se um morador desonesto diz "eu sou desonesto" então estaria falando a verdade, e portanto seria honesto. Em ambos os casos, um morador seria simultaneamente honesto e desonesto, o que não é possível. Desta forma, o que \(B\) falou é mentira, e portanto \(B\) é desonesto. Assim, \(C\) disse a verdade e portanto é honesto.
Posteriormente, veremos uma solução deste problema em um sistema formal.
Apresentação do curso
O curso de Lógica Computacional visa proporcionar ao estudante os fundamentos da lógica matemática, mas com foco na resolução de problemas relevantes para a Ciência da Computação. Neste sentido, a abordagem será na dedução lógica, ou seja, na construção de provas a serem exploradas via dois sistemas dedutivos: a Dedução Natural (DN) e o Cálculo de Sequentes (CS).
Em linhas gerais, um sistema dedutivo nos permite inferir novas informações a partir de informações já existentes. Por exemplo, suponha que tenhamos as seguintes informações:
- Se \(\phi\) então \(\psi\), que podemos representar simbolicamente por \(\phi \to \psi\).
- \(\phi\)
Então podemos inferir \(\psi\).
Neste caso, o conhecimento existente é composto de duas informações, a saber: \(\phi\) e \(\phi \to \psi\); e a nova informação obtida é \(\psi\).
O processo utilizado para inferir \(\psi\) a partir de \(\phi\) e \(\phi \to \psi\) é conhecido como modus ponens (MP). Esquematicamente, podemos representar este processo da seguite forma:
\[\inferrule*[Right=(MP)]{\phi\to \psi \and \phi}{\psi}\]
A representação acima é conhecida como regra de inferência. Uma regra de inferência é um esquema utilizado para representar argumentos válidos, e é composta de duas partes separadas por uma linha horizontal. Em cima da linha são colocados os fatos já conhecidos, que chamamos de hipóteses, e abaixo da linha colocamos a nova informação inferida a partir das hipóteses. Esta nova informação é chamada de conclusão. Como veremos, as regras de inferência serão utilizadas de forma sistemática neste curso. Por exemplo, no esquena a seguir, a regra de inferência \(R\) tem \(h_1, h_2, \ldots, h_n\) como hipóteses, e \(c\) como conclusão:
\[\inferrule*[Right=(R)]{h_1\ h_2\ \ldots\ h_n}{c}\]
Agora precisamos dizer como podemos representar as nossas hipóteses e nossa conclusão. A utilização de linguagem natural para isto (como o Português, por exemplo) não é conveniente porque linguagens naturais são ambíguas. Iniciaremos então com uma linguagem bem simples baseada na noção de proposição. Uma proposição é simplesmente um fato que pode ser qualificado como verdadeiro ou falso.
Lógica Proposicional (LP)
A lógica proposicional é baseada na noção de proposição, i.e. uma afirmação que pode ser qualificada como verdadeira ou falsa. Assim, são proposições as afirmações:
- \(2 \leq 3\);
- \(0 =1\);
- João tem 23 anos;
- A soma de dois números ímpares é um número par.
No entanto, existem afirmações que não são proposições:
- Qual é o seu nome?
- Feche a porta!
Utilizaremos as letras \(p\), \(q\) e \(r\) (com ou sem subíndices) para denotar proposições arbitrárias. Novas proposições podem ser construídas por meio dos conectivos lógicos:
Sintaxe da LP
As fórmulas da lógica proposicional são dadas pela seguinte gramática:
\(\varphi ::= p \mid \bot \mid (\neg\varphi) \mid (\varphi \land \varphi) \mid (\varphi \lor \varphi) \mid (\varphi \to \varphi)\)
Semântica da LP
Solução formal (via lógica proposicional):
Vamos considerar 3 variáveis proposicionais \(p_A\), \(p_B\) e \(p_C\) que corresponderão às seguinte proposições:
\(p_x\): \(x\) é honesto onde \(x\in \{A, B, C\}\). Assim, a variável \(p_x\) é verdadeira se, e somente se, \(x\) é honesto.
Sistemas dedutivos na LP
Dedução Natural
O sistema dedutivo que estudaremos a seguir foi desenvolvido pelo matemático e lógico alemão Gerhard Gentzen (1909-1945), e é conhecido como dedução natural (DN).
- Solução do desafio 1: coq
Cálculo de Sequentes
Lógica de Primeira Ordem (LPO)
Sintaxe da LPO
Semântica da LPO
Sistemas dedutivos na LPO
Dedução Natural
Cálculo de Sequentes
Aplicações em Computação
Ideias de projetos
cite:smullyanLogicalLabyrinths2009 cite:mollerModellingComputingSystems2013 cite:swartPhilosophicalMathematicalLogic2018