Conteúdos da cadeira

Quantificadores

Variáveis, tradução com para todo e existe, múltiplos quantificadores e provas.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

A lógica proposicional trata cada frase como um bloco. Mas “todos os alunos sabem programar” fala de objetos individuais e da sua quantidade. Os quantificadores abrem a frase e deixam quantificar sobre objetos: \forall (“para todo”) e \exists (“existe”). Com eles consegues representar quase todo o discurso matemático, das definições de funções às propriedades de relações.

Variáveis e fórmulas bem formadas

Uma variável como xx não refere nenhum objeto: marca um lugar nos argumentos de um predicado. Gosta(clara,x)Gosta(clara, x) é uma condição sobre xx, não uma frase com valor de verdade. Só quando quantificamos a variável, como em xGosta(clara,x)\exists x\, Gosta(clara, x), obtemos uma frase que é verdadeira ou falsa.

Uma fórmula onde todas as variáveis estão quantificadas chama-se frase. Aluno(x)NaSala(x)Aluno(x) \land NaSala(x) tem xx livre e não pode ser avaliada; x(Aluno(x)NaSala(x))\exists x\,(Aluno(x) \land NaSala(x)) já pode. Esta distinção importa nas provas: só frases são premissas ou conclusões.

Os dois quantificadores

  • xP(x)\forall x\, P(x): todos os objetos verificam a condição PP. Em português: “todo”, “cada”, “qualquer”.
  • xP(x)\exists x\, P(x): pelo menos um objeto verifica PP. Em português: “algum”, “existe”, “há”, “um”.

Repara que \exists não diz “só um”, diz “um ou mais”. “Existe um aluno na sala” continua verdadeiro se houver três.

Os dois padrões de tradução

Quase todas as traduções usam um de dois moldes. Decora-os, porque trocar o molde é o erro mais penalizado:

  • Todo o A é B: x(A(x)B(x))\forall x\,(A(x) \to B(x)). O universal combina com o condicional. “Todos os alunos de MDIS estão na sala”: x(AlunoMDIS(x)NaSala(x))\forall x\,(AlunoMDIS(x) \to NaSala(x)).
  • Algum A é B: x(A(x)B(x))\exists x\,(A(x) \land B(x)). O existencial combina com a conjunção. “Algum aluno de MDIS está na sala”: x(AlunoMDIS(x)NaSala(x))\exists x\,(AlunoMDIS(x) \land NaSala(x)).

Porquê? Testa a combinação errada x(A(x)B(x))\forall x\,(A(x) \land B(x)): ela exige que todos os objetos sejam A, o que é demasiado forte. E x(A(x)B(x))\exists x\,(A(x) \to B(x)) é demasiado fraca: basta um objeto que não seja A para o condicional ser vacuamente verdadeiro, por isso a frase diria quase nada. Quando traduzires, pergunta sempre: “esta tradução diz exatamente o que a frase portuguesa diz, nem mais nem menos?”

Negar frases quantificadas

A negação troca os quantificadores:

  • ¬xP(x)x¬P(x)\lnot \forall x\, P(x) \equiv \exists x\, \lnot P(x). “Nem todos sabem programar” equivale a “existe quem não saiba”.
  • ¬xP(x)x¬P(x)\lnot \exists x\, P(x) \equiv \forall x\, \lnot P(x). “Não há erros no programa” equivale a “tudo está sem erros”.

Exemplo completo: negar “todos os corvos são pretos”, x(Corvo(x)Preto(x))\forall x\,(Corvo(x) \to Preto(x)).

  1. x¬(Corvo(x)Preto(x))\exists x\, \lnot(Corvo(x) \to Preto(x)).
  2. Como AB¬ABA \to B \equiv \lnot A \lor B, negar dá A¬BA \land \lnot B: x(Corvo(x)¬Preto(x))\exists x\,(Corvo(x) \land \lnot Preto(x)).
  3. Em português: “existe um corvo que não é preto”. É exatamente o que esperavas: um contraexemplo deita abaixo um “todos”.

Múltiplos quantificadores e a ordem

Com dois quantificadores, a ordem interessa quando eles são diferentes. Compara:

  • xyGosta(x,y)\forall x\, \exists y\, Gosta(x, y): “toda a gente gosta de alguém” (o alguém pode variar de pessoa para pessoa).
  • yxGosta(x,y)\exists y\, \forall x\, Gosta(x, y): “há alguém de quem toda a gente gosta” (a mesma pessoa para todos).

A segunda implica a primeira, mas não o contrário. Um contraexemplo: duas pessoas aa e bb onde cada uma gosta só de si própria. Aí xyGosta(x,y)\forall x\, \exists y\, Gosta(x, y) é verdadeira, mas yxGosta(x,y)\exists y\, \forall x\, Gosta(x, y) é falsa, porque ninguém é gostado por ambas. Quantificadores iguais podem trocar (xy\forall x\, \forall y é o mesmo que yx\forall y\, \forall x); quantificadores diferentes, não.

Forma prenexa e âmbito

Diz-se que uma fórmula está na forma prenexa quando todos os quantificadores estão à frente: Q1x1Q2x2QnxnMQ_1x_1\, Q_2x_2 \dots Q_nx_n\, M, onde MM não tem quantificadores. Converter para esta forma (empurrando negações para dentro com as leis da secção anterior) ajuda a comparar frases e a preparar provas. O âmbito de um quantificador é a parte da fórmula onde a variável está ligada por ele; fora do âmbito, outra variável com o mesmo nome seria uma variável diferente.

Provas com quantificadores

Há quatro movimentos, dois por quantificador:

  • Eliminação do universal: de xP(x)\forall x\, P(x) infere P(c)P(c) para qualquer objeto cc. O que vale para todos vale para cada um.
  • Introdução do existencial: de P(c)P(c) para um objeto concreto cc, infere xP(x)\exists x\, P(x). Um exemplo basta para um “existe”.
  • Instanciação existencial (eliminação do existencial): de xS(x)\exists x\, S(x), escolhe um nome novo cc e assume S(c)S(c). É como dizer “chamemos-lhe Zé” a um objeto cuja existência já provaste. A condição do nome novo é essencial: não podes reutilizar um nome que já designa outro objeto.
  • Prova condicional geral e generalização universal: para provar x(P(x)Q(x))\forall x\,(P(x) \to Q(x)), escolhe um objeto arbitrário cc (nome novo), assume P(c)P(c) e prova Q(c)Q(c). Como cc podia ser qualquer um, o resultado vale para todos.

Exemplo: o silogismo em forma moderna

Prova que “todos os alunos do terceiro ano sabem programar” segue de “todos os alunos com boa nota a Programação sabem programar” e “todos os alunos do terceiro ano tiveram boa nota a Programação”.

Escreve T(x)T(x) para “é do terceiro ano”, B(x)B(x) para “teve boa nota” e S(x)S(x) para “sabe programar”. As premissas são x(B(x)S(x))\forall x\,(B(x) \to S(x)) e x(T(x)B(x))\forall x\,(T(x) \to B(x)).

  1. Escolhe um aluno arbitrário zz e assume T(z)T(z). (Generalização universal mais prova condicional.)
  2. Instancia a segunda premissa em zz: T(z)B(z)T(z) \to B(z). Com T(z)T(z), obténs B(z)B(z) por modus ponens.
  3. Instancia a primeira em zz: B(z)S(z)B(z) \to S(z). Com B(z)B(z), obténs S(z)S(z).
  4. Como zz era arbitrário e só assumiste T(z)T(z), concluis x(T(x)S(x))\forall x\,(T(x) \to S(x)).

Este é o molde da prova condicional geral: arbitrário dentro, universal fora. Reconhecê-lo no enunciado (“para um xx qualquer…”) diz-te logo que regra usar.

Verdades lógicas com quantificadores

Nem tudo o que parece válido é válido, e a diferença entre tautologia (verdade só pela estrutura booleana) e verdade lógica (verdade em todos os mundos, incluindo pelos quantificadores) cai nos testes. Exemplos para fixar:

  • xCube(x)x¬Cube(x)\exists x\, Cube(x) \lor \exists x\, \lnot Cube(x) é verdade lógica, mas xCube(x)x¬Cube(x)\forall x\, Cube(x) \lor \forall x\, \lnot Cube(x) não é: num mundo com um cubo e um não cubo, a segunda é falsa.
  • xCube(x)¬xCube(x)\forall x\, Cube(x) \lor \lnot\forall x\, Cube(x) é tautologia (tem a forma P¬PP \lor \lnot P).
  • De xCube(x)\forall x\, Cube(x) e xSmall(x)\forall x\, Small(x) segue x(Cube(x)Small(x))\forall x\,(Cube(x) \land Small(x)), mas de xCube(x)\exists x\, Cube(x) e xSmall(x)\exists x\, Small(x) não segue x(Cube(x)Small(x))\exists x\,(Cube(x) \land Small(x)): o cubo e o pequeno podem ser objetos diferentes.

De volta ao essencial

Traduzir bem é metade da cadeira: o molde universal com \to e o molde existencial com \land, a negação que troca \forall por \exists, e a ordem dos quantificadores mistos. Com isto, as definições de relações, funções e congruências passam a ler-se como frases precisas em vez de símbolos decorados.

Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.