Lógica proposicional

Sintaxe, tabelas de verdade, consequência, equivalências e formas normais.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

«Há autorização» ou é verdade ou é falso. Uma frase assim, que é verdadeira ou falsa sem meio termo, chama-se proposição, uma afirmação com valor de verdade TT ou FF. «Abre a porta!» é uma ordem, por isso não é uma proposição: não faz sentido dizer que é verdadeira ou falsa.

A lógica proposicional, o estudo de como combinar proposições para decidir o valor do conjunto, parte destas frases simples. «A porta abre» quando «há autorização» e «o sistema não está bloqueado». Se escrevermos pp para «há autorização» e qq para «o sistema está bloqueado», com ∧\land a ler-se «e» e ¬\neg a ler-se «não», a condição escreve-se p∧¬qp\land\neg q. Não precisamos de saber como se obtém a autorização para calcular o valor de p∧¬qp\land\neg q.

Fórmulas e subfórmulas

Uma fórmula bem formada constrói-se pelas regras seguintes:

  • Cada variável proposicional, como pp, é uma fórmula.
  • Se φ\varphi é fórmula, ¬φ\neg\varphi também é.
  • Se φ\varphi e ψ\psi são fórmulas, φ∧ψ\varphi\land\psi, φ∨ψ\varphi\lor\psi e φ→ψ\varphi\to\psi também são.

Os parênteses indicam a construção. Usamos a precedência ¬\neg, depois ∧\land, depois ∨\lor, depois →\to. A implicação associa à direita: p→q→rp\to q\to r significa p→(q→r)p\to(q\to r).

Em ¬(p∧q)→r\neg(p\land q)\to r, a conetiva principal é →\to. As subfórmulas imediatas são ¬(p∧q)\neg(p\land q) e rr. Descendo na construção encontramos p∧qp\land q, pp e qq. Uma subfórmula é uma expressão completa da árvore sintática; q)→q)\to não é uma subfórmula.

Avaliação pela árvore sintática

Para p∧¬qp \land \neg q com p=Tp=T e q=Tq=T, calcula dentro para fora: ¬q=F\neg q=F e depois T∧F=FT \land F=F. A conetiva principal é o ∧\land final; as subfórmulas imediatas são pp e ¬q\neg q. A árvore sintática é:

      ∧
     / \
    p   ¬
        |
        q

Lê a árvore de baixo para cima quando avalias e de cima para baixo quando identificas a regra principal.

As conetivas

ppqq¬p\neg pp∧qp\land qp∨qp\lor qp→qp\to qp↔qp\leftrightarrow q
TTFTTTT
TFFFTFF
FTTFTTF
FFTFFTT

A disjunção ∨\lor é inclusiva: aceita que ambas as partes sejam verdadeiras. “Exatamente uma” escreve-se (p∨q)∧¬(p∧q)(p\lor q)\land\neg(p\land q).

Uma implicação é falsa apenas quando o antecedente é verdadeiro e o consequente é falso. No exemplo da porta, introduzimos rr para «a porta abre». A condição (p∧¬q)→r(p\land\neg q)\to r só falha quando há autorização, o sistema não está bloqueado e a porta não abre. Saber essa condição não afirma que há autorização, nem que esta é a única forma de abrir a porta. A implicação inversa r→(p∧¬q)r\to(p\land\neg q) é outra afirmação.

”pp só se qq” escreve-se p→qp\to q: qq é uma condição necessária para pp. ”pp se qq” escreve-se q→pq\to p: qq é suficiente para pp. “Se e só se” exige as duas direções, abreviadas por p↔qp\leftrightarrow q.

A partir de p→qp\to q formam-se três implicações diferentes. Só uma delas é equivalente à original:

NomeFormaRelação com p→qp\to q
Recíprocaq→pq\to pNão é equivalente. Afirmar o consequente.
Inversa¬p→¬q\neg p\to\neg qEquivale à recíproca, não à original.
Contrapositiva¬q→¬p\neg q\to\neg pEquivalente à original. Negar e trocar.

No exemplo da porta, a recíproca r→(p∧¬q)r\to(p\land\neg q) diz que a porta só abre com autorização e sistema desbloqueado. A contrapositiva ¬r→¬(p∧¬q)\neg r\to\neg(p\land\neg q) diz que, se a porta não abre, então faltou autorização ou o sistema estava bloqueado. Confundir a original com a recíproca é a falácia de afirmar o consequente: ver a porta aberta não prova que houve autorização, pois outra forma de abrir também satisfaz p=F,qp=F,q qualquer, r=Tr=T.

Atribuições e tabelas de verdade

Uma atribuição vv escolhe TT ou FF para cada variável. Estendemos vv às fórmulas aplicando as conetivas de dentro para fora. Escrevemos ⊨vφ\models_v\varphi quando v(φ)=Tv(\varphi)=T.

Para φ=(p∨q)∧¬p\varphi=(p\lor q)\land\neg p, calculamos primeiro p∨qp\lor q e ¬p\neg p:

ppqqp∨qp\lor q¬p\neg pφ\varphi
TTTFF
TFTFF
FTTTT
FFFTF

Há 2n2^n atribuições para nn variáveis distintas, porque cada variável tem duas escolhas independentes. Repetir pp na fórmula não cria uma variável nova.

  • Uma tautologia é verdadeira em todas as atribuições, como p∨¬pp\lor\neg p.
  • Uma fórmula satisfazível é verdadeira em pelo menos uma atribuição.
  • Uma contradição, ou fórmula insatisfazível, é falsa em todas, como p∧¬pp\land\neg p.
  • Uma fórmula contingente tem atribuições verdadeiras e falsas.

A tabela mostra que φ\varphi é contingente. Em particular, é satisfazível e não é uma tautologia. Escrever ⊭φ\not\models\varphi diz apenas que não é válida, não que é uma contradição.

Consequência e contraexemplos

Γ⊨φ\Gamma\models\varphi significa que toda a atribuição que torna todas as premissas de Γ\Gamma verdadeiras também torna φ\varphi verdadeira. Não interessa uma linha em que uma premissa já é falsa.

Por exemplo, p∨q,¬p⊨qp\lor q,\neg p\models q. A única atribuição que satisfaz as duas premissas tem p=Fp=F e q=Tq=T.

Para refutar p→q,q⊨pp\to q,q\models p, escolhemos p=F,q=Tp=F,q=T. Ambas as premissas são verdadeiras e a conclusão é falsa. Esta atribuição é um contraexemplo ao argumento.

Se as premissas são insatisfazíveis, não existe linha com todas verdadeiras. Nesse caso, qualquer conclusão é consequência semântica delas. Para premissas finitas, podemos usar o teste equivalente:

Γ⊨φ⟺⋀ψ∈Γψ∧¬φ eˊ insatisfazıˊvel.\Gamma\models\varphi \quad\Longleftrightarrow\quad \bigwedge_{\psi\in\Gamma}\psi\land\neg\varphi \text{ é insatisfazível}.

Acrescentar e retirar premissas

Se Γ⊨φ\Gamma\models\varphi e Γ⊆Σ\Gamma\subseteq\Sigma, então Σ⊨φ\Sigma\models\varphi. Uma atribuição que satisfaz todas as premissas de Σ\Sigma também satisfaz as de Γ\Gamma, logo satisfaz φ\varphi. Acrescentar premissas reduz os casos que é preciso verificar; esta propriedade chama-se monotonia da consequência.

Retirar premissas pode perder a conclusão. Temos {p,p→q}⊨q\{p,p\to q\}\models q, mas {p→q}⊭q\{p\to q\}\not\models q: p=F,q=Fp=F,q=F satisfaz a única premissa e falsifica qq.

Também não podemos intersectar dois conjuntos de premissas só porque ambos implicam a mesma conclusão. {p}⊨p∨q\{p\}\models p\lor q e {q}⊨p∨q\{q\}\models p\lor q, mas a interseção é vazia. Com p=q=Fp=q=F, a conclusão é falsa, por isso ∅⊭p∨q\emptyset\not\models p\lor q.

Enumerar contraexemplos

Para duas variáveis, podemos percorrer as quatro atribuições e conservar apenas as que satisfazem as premissas e falsificam a conclusão. No código, implica(p, q) implementa p→qp\to q como !p || q. && corresponde à conjunção e ! à negação.

O argumento inicial é o do exercício «Refutar uma consequência»: p→q,q⊨p∧qp\to q,q\models p\land q. Compara a atribuição encontrada com a justificação escrita acima. Depois troca a definição de conclusao por (p, q) => q. Por que deixa de aparecer um contraexemplo? A premissa qq já garante essa conclusão.

Contraexemplos de uma consequência
const implica = (a, b) => !a || b;
const premissas = (p, q) => implica(p, q) && q;
const conclusao = (p, q) => p && q;
const valor = (v) => (v ? 'T' : 'F');

let quantidade = 0;
for (const p of [false, true]) {
  for (const q of [false, true]) {
    if (premissas(p, q) && !conclusao(p, q)) {
      console.log(`Contraexemplo: p=${valor(p)}, q=${valor(q)}`);
      quantidade++;
    }
  }
}
console.log(`Atribuições verificadas: 4. Contraexemplos: ${quantidade}.`);
Resultado

Executa o código para ver a saída e os gráficos.

Aqui, percorrer as quatro atribuições é uma verificação exaustiva, porque só aparecem pp e qq. Se introduzires rr nas fórmulas, tens também de enumerar os seus dois valores. Conferir alguns casos de uma afirmação sobre inteiros ou sobre relações arbitrárias não tem o mesmo alcance.

Equivalências

φ⇔ψ\varphi\Leftrightarrow\psi diz que as fórmulas têm o mesmo valor em todas as atribuições. É uma relação entre fórmulas. Já φ↔ψ\varphi\leftrightarrow\psi é uma fórmula da linguagem, que será uma tautologia se houver essa equivalência.

As transformações seguintes preservam o valor de verdade:

TransformaçãoEquivalência
Implicaçãop→q⇔¬p∨qp\to q\Leftrightarrow\neg p\lor q
Dupla negação¬¬p⇔p\neg\neg p\Leftrightarrow p
De Morgan¬(p∧q)⇔¬p∨¬q\neg(p\land q)\Leftrightarrow\neg p\lor\neg q
De Morgan¬(p∨q)⇔¬p∧¬q\neg(p\lor q)\Leftrightarrow\neg p\land\neg q
Distributividadep∧(q∨r)⇔(p∧q)∨(p∧r)p\land(q\lor r)\Leftrightarrow(p\land q)\lor(p\land r)
Distributividadep∨(q∧r)⇔(p∨q)∧(p∨r)p\lor(q\land r)\Leftrightarrow(p\lor q)\land(p\lor r)
Absorçãop∧(p∨q)⇔pp\land(p\lor q)\Leftrightarrow p
Absorçãop∨(p∧q)⇔pp\lor(p\land q)\Leftrightarrow p
Contraposiçãop→q⇔¬q→¬pp\to q\Leftrightarrow\neg q\to\neg p

Conjunção e disjunção são comutativas, associativas e idempotentes. A implicação não é comutativa. Por exemplo, T→FT\to F é falsa, enquanto F→TF\to T é verdadeira.

Formas normais

Um literal é uma variável ou a sua negação. Na forma normal negativa, as negações só aparecem em literais e usamos apenas ∧\land, ∨\lor e ¬\neg.

Para transformar ¬(p→(q∧r))\neg(p\to(q\land r)), eliminamos a implicação e levamos a negação até aos literais:

¬(p→(q∧r))⇔¬(¬p∨(q∧r))⇔p∧¬(q∧r)⇔p∧(¬q∨¬r).\begin{aligned} \neg(p\to(q\land r)) &\Leftrightarrow\neg(\neg p\lor(q\land r))\\ &\Leftrightarrow p\land\neg(q\land r)\\ &\Leftrightarrow p\land(\neg q\lor\neg r). \end{aligned}

Esta fórmula já está em forma normal conjuntiva, FNC ou CNF, uma conjunção de disjunções de literais. Um literal sozinho também pode ser uma cláusula. Distribuindo a conjunção obtemos a forma normal disjuntiva, FND ou DNF:

(p∧¬q)∨(p∧¬r).(p\land\neg q)\lor(p\land\neg r).

Uma FND é satisfazível se pelo menos uma das suas conjunções não contiver literais opostos. Uma FNC é uma tautologia se cada cláusula contiver um literal e a sua negação. Estes critérios não trocam de papel: ter cláusulas individualmente satisfazíveis não garante que a sua conjunção seja satisfazível. p∧¬pp\land\neg p é um contraexemplo.

Construir a partir da tabela

Para obter FND, usamos as linhas verdadeiras. Em cada linha, juntamos por ∧\land a variável se vale TT e a sua negação se vale FF. Depois juntamos os termos por ∨\lor.

Na tabela de (p∨q)∧¬p(p\lor q)\land\neg p, só a linha p=F,q=Tp=F,q=T é verdadeira. A FND é ¬p∧q\neg p\land q.

Para obter FNC, usamos as linhas falsas. Cada cláusula deve ser falsa exatamente nessa linha, por isso escolhemos a negação de uma variável com valor TT e a variável sem negação se vale FF. A FNC da mesma tabela é:

(¬p∨¬q)∧(¬p∨q)∧(p∨q).(\neg p\lor\neg q)\land(\neg p\lor q)\land(p\lor q).

A primeira cláusula exclui (T,T)(T,T), a segunda exclui (T,F)(T,F) e a terceira exclui (F,F)(F,F). Não escolhemos os sinais por memória, verificamos que a cláusula é falsa na linha que queremos excluir.

Para a tabela sempre falsa, uma FND possível é p∧¬pp\land\neg p. Para a tabela sempre verdadeira, uma FNC possível é p∨¬pp\lor\neg p.

Conjuntos completos de conetivas

Uma fórmula com nn variáveis define uma função {T,F}n→{T,F}\{T,F\}^n\to\{T,F\}. Há 22n2^{2^n} funções destas: uma escolha de saída para cada uma das 2n2^n entradas.

Um conjunto de conetivas é completo se consegue representar qualquer função de verdade. A construção da FND mostra que {¬,∧,∨}\{\neg,\land,\lor\} é completo. Para provar que {¬,→}\{\neg,\to\} também é completo, podemos representar as conetivas que faltam:

p∨q⇔¬p→q,p∧q⇔¬(p→¬q).p\lor q\Leftrightarrow\neg p\to q, \qquad p\land q\Leftrightarrow\neg(p\to\neg q).

Por outro lado, {∧,∨}\{\land,\lor\} não é completo. Qualquer fórmula construída só com estas conetivas vale TT quando todas as variáveis valem TT, por isso não representa ¬p\neg p.

Circuitos, mapas de Karnaugh e portas NAND

Uma fórmula booleana também se lê como um circuito: cada ocorrência de conetiva é uma porta, sem partilhar saídas entre portas. ¬\neg usa uma porta NOT unária com uma entrada; ∧\land e ∨\lor usam portas binárias com duas entradas. Para a expressão

(¬B∧((¬A∧C)∨¬C))∨(A∧¬(B∧C)),(\neg B\land((\neg A\land C)\lor\neg C))\lor(A\land\neg(B\land C)),

uma construção direta usa 4 portas NOT, 4 portas AND binárias e 2 portas OR binárias, uma por cada ocorrência na escrita. O circuito calcula a mesma função que a FND obtida por equivalências:

(¬B∧¬A∧C)∨(¬B∧¬C)∨(A∧¬B)∨(A∧¬C).(\neg B\land\neg A\land C)\lor(\neg B\land\neg C)\lor(A\land\neg B)\lor(A\land\neg C).

Esta FND é outra árvore sintática, por isso a contagem é outra. Sem partilhar subexpressões e com portas binárias, ela usa 6 ocorrências de NOT, 5 AND binários e 3 OR binários. Só a forma simplificada abaixo é que usa poucas portas.

Os termos desta FND não são todos mintermos. Um mintermo fixa as três variáveis e cobre uma só linha; um termo incompleto deixa variáveis de fora e cobre várias linhas. Aqui:

  • ¬B∧¬A∧C\neg B\land\neg A\land C cobre só A=0,B=0,C=1A=0,B=0,C=1.
  • ¬B∧¬C\neg B\land\neg C cobre A=0,B=0,C=0A=0,B=0,C=0 e A=1,B=0,C=0A=1,B=0,C=0.
  • A∧¬BA\land\neg B cobre A=1,B=0,C=0A=1,B=0,C=0 e A=1,B=0,C=1A=1,B=0,C=1.
  • A∧¬CA\land\neg C cobre A=1,B=0,C=0A=1,B=0,C=0 e A=1,B=1,C=0A=1,B=1,C=0.

A união dá as cinco linhas verdadeiras 000,001,100,101,110000,001,100,101,110. Para ver estes conjuntos, o mapa de Karnaugh dispõe as oito combinações numa grelha onde células vizinhas diferem numa só variável. As colunas seguem a ordem Gray 00,01,11,1000,01,11,10 para BCBC; as arestas opostas contam como vizinhas, como se o mapa desse a volta. Agrupamos os uns em retângulos com 11, 22, 44 ou 88 células. Cada grupo elimina as variáveis que mudam dentro dele.

No mapa, o bloco das duas primeiras colunas reúne as quatro células com B=0B=0; elimina AA e CC. O par da linha A=1A=1 reúne as células 100100 e 110110, que são vizinhas pela borda direita e esquerda e partilham A=1,C=0A=1,C=0; elimina BB. A célula 100100 pertence aos dois grupos. A expressão simplificada é:

¬B∨(A∧¬C).\neg B\lor(A\land\neg C).

O circuito simplificado usa 2 portas NOT, 1 AND binário e 1 OR binário. A simplificação conserva a função de verdade: os dois blocos cobrem exatamente as cinco linhas verdadeiras listadas acima.

A mesma função escreve-se com um só tipo de porta. A porta NAND define-se por P↑Q=¬(P∧Q)P\uparrow Q=\neg(P\land Q). Como ¬P⇔P↑P\neg P\Leftrightarrow P\uparrow P, obtemos NOT; negando um NAND obtemos AND; por De Morgan obtemos OR. Para a forma simplificada, a construção explícita com três NAND binários é:

B↑(A↑(C↑C)).B\uparrow(A\uparrow(C\uparrow C)).

Lê de dentro para fora: C↑CC\uparrow C é ¬C\neg C; A↑(¬C)A\uparrow(\neg C) é ¬(A∧¬C)\neg(A\land\neg C); B↑¬(A∧¬C)B\uparrow\neg(A\land\neg C) é ¬B∨(A∧¬C)\neg B\lor(A\land\neg C). As oito atribuições dão 1,1,0,0,1,1,1,01,1,0,0,1,1,1,0 por ABC=000ABC=000 até 111111, tal como a original, a FND e a simplificada. A construção análoga com NOR usa P↓Q=¬(P∨Q)P\downarrow Q=\neg(P\lor Q). Escolher NAND ou NOR não muda a função representada, só o conjunto de portas permitido.

Conferir uma equivalência

Voltamos a φ=(p∨q)∧¬p\varphi=(p\lor q)\land\neg p. A FND obtida da tabela foi ¬p∧q\neg p\land q. Podemos justificar a simplificação sem enumerar atribuições:

(p∨q)∧¬p⇔(p∧¬p)∨(q∧¬p)⇔q∧¬p⇔¬p∧q.\begin{aligned} (p\lor q)\land\neg p &\Leftrightarrow(p\land\neg p)\lor(q\land\neg p)\\ &\Leftrightarrow q\land\neg p\\ &\Leftrightarrow\neg p\land q. \end{aligned}

A primeira passagem distribui a conjunção. O termo p∧¬pp\land\neg p nunca é verdadeiro, por isso não altera a disjunção. A última passagem troca a ordem da conjunção. A tabela e as transformações chegam à mesma condição: p=F,q=Tp=F,q=T.

Exercícios

FND e FNC da mesma tabela

Uma função de duas variáveis é verdadeira precisamente quando pp e qq têm valores diferentes. Constrói uma FND a partir das linhas verdadeiras e uma FNC a partir das falsas. Justifica os sinais e confere que representam a mesma função.

Pista

Em cada linha, a conjunção da FND tem de ser verdadeira; a cláusula da FNC tem de ser falsa.

Solução

As linhas verdadeiras são (T,F)(T,F) e (F,T)(F,T). A FND é (p∧¬q)∨(¬p∧q)(p\land\neg q)\lor(\neg p\land q): cada termo fica verdadeiro na sua linha.

As falsas são (T,T)(T,T) e (F,F)(F,F). Para excluir a primeira usamos ¬p∨¬q\neg p\lor\neg q, e para excluir a segunda usamos p∨qp\lor q. A FNC é (¬p∨¬q)∧(p∨q)(\neg p\lor\neg q)\land(p\lor q).

ppqqFNDFNC
TTFF
TFTT
FTTT
FFFF

As duas colunas coincidem e descrevem «exatamente uma verdadeira».

Confere a tua resposta:

  • Usei as duas linhas verdadeiras na FND e as duas falsas na FNC.
  • Justifiquei os sinais em cada termo e cláusula.
  • Conferi as quatro atribuições.

Erros frequentes

Uma cláusula falsa numa linha não é um termo verdadeiro nessa linha. Trocar os sinais entre os dois métodos muda a função.

Voltar à explicação
Refutar uma consequência

É verdade que p→q,q⊨p∧qp\to q,q\models p\land q? Prova ou apresenta uma atribuição que refute a consequência.

Pista

A conclusão exige pp. As premissas obrigam a que pp seja verdadeiro?

Mais uma pista

Experimenta p=F,q=Tp=F,q=T.

Solução

A consequência é falsa. Com p=F,q=Tp=F,q=T, p→qp\to q e qq são verdadeiras, mas p∧qp\land q é falsa. Não há obrigação de o antecedente ser verdadeiro só porque o consequente é.

O enumerador de contraexemplos usa este argumento como estado inicial. Depois de justificares a atribuição, troca a conclusão por qq e explica por que o resultado muda.

Confere a tua resposta:

  • A atribuição torna as duas premissas verdadeiras.
  • A conclusão é falsa nessa mesma atribuição.
  • Distingo implicação de implicação inversa.

Erros frequentes

Uma linha com a premissa qq falsa não refuta o argumento.

Voltar à explicação
Provar completude com NAND

Define p↑q=¬(p∧q)p\uparrow q=\neg(p\land q). Escreve ¬p\neg p, p∧qp\land q e p∨qp\lor q usando só ↑\uparrow. Explica por que isto prova completude.

Pista

Aplicar NAND a duas cópias da mesma variável dá a sua negação.

Mais uma pista

Para negar um NAND, aplica NAND a duas cópias do seu resultado. Para a disjunção, usa De Morgan.

Solução

Temos ¬p⇔p↑p\neg p\Leftrightarrow p\uparrow p. Depois p∧q⇔(p↑q)↑(p↑q)p\land q\Leftrightarrow(p\uparrow q)\uparrow(p\uparrow q) e p∨q⇔(p↑p)↑(q↑q)p\lor q\Leftrightarrow(p\uparrow p)\uparrow(q\uparrow q). Como conseguimos substituir todas as conetivas de {¬,∧,∨}\{\neg,\land,\lor\}, que é completo, {↑}\{\uparrow\} também é completo.

Confere a tua resposta:

  • Representei a negação com p ↑ p.
  • Representei conjunção e disjunção sem outras conetivas.
  • Relacionei as representações com um conjunto já completo.

Erros frequentes

Mostrar só que uma fórmula particular pode escrever-se com NAND não prova completude.

Voltar à explicação
Simplificar com Karnaugh e converter para NAND

Parte da expressão (¬B∧((¬A∧C)∨¬C))∨(A∧¬(B∧C))(\neg B\land((\neg A\land C)\lor\neg C))\lor(A\land\neg(B\land C)), que usa 4 NOT, 4 AND binários e 2 OR binários sem partilha. A sua FND é (¬B∧¬A∧C)∨(¬B∧¬C)∨(A∧¬B)∨(A∧¬C)(\neg B\land\neg A\land C)\lor(\neg B\land\neg C)\lor(A\land\neg B)\lor(A\land\neg C), com 6 NOT, 5 AND binários e 3 OR binários sem partilha. Agrupa os uns no mapa de Karnaugh de três variáveis, escreve a expressão simplificada e converte-a para usar só portas NAND. Indica quantas portas usa antes e depois.

Pista

Todas as células com ¬B\neg B formam um bloco de quatro. As restantes células verdadeiras partilham A∧¬CA\land\neg C.

Mais uma pista

Depois de obteres ¬B∨(A∧¬C)\neg B\lor(A\land\neg C), escreve-a como B↑(A↑(C↑C))B\uparrow(A\uparrow(C\uparrow C)). Cada ¬X\neg X é X↑XX\uparrow X.

Solução

Os quatro termos da FND cobrem cinco linhas: ¬B∧¬A∧C\neg B\land\neg A\land C cobre só 001001; ¬B∧¬C\neg B\land\neg C cobre 000000 e 100100; A∧¬BA\land\neg B cobre 100100 e 101101; A∧¬CA\land\neg C cobre 100100 e 110110. O bloco ¬B\neg B elimina AA e CC; o bloco A∧¬CA\land\neg C elimina BB, com as células 100100 e 110110 vizinhas pela borda. A forma simplificada é ¬B∨(A∧¬C)\neg B\lor(A\land\neg C), que é verdadeira exatamente nessas cinco linhas. Usa 2 NOT, 1 AND binário e 1 OR binário.

Para NAND, com P↑Q=¬(P∧Q)P\uparrow Q=\neg(P\land Q), o resultado explícito é:

B↑(A↑(C↑C)),B\uparrow(A\uparrow(C\uparrow C)),

com três portas NAND binárias: C↑CC\uparrow C dá ¬C\neg C; A↑(¬C)A\uparrow(\neg C) dá ¬(A∧¬C)\neg(A\land\neg C); B↑¬(A∧¬C)B\uparrow\neg(A\land\neg C) dá ¬B∨(A∧¬C)\neg B\lor(A\land\neg C). As oito atribuições dão 1,1,0,0,1,1,1,01,1,0,0,1,1,1,0 por ABC=000ABC=000 até 111111, tal como a original e a FND.

Confere a tua resposta:

  • Agrupei os uns em blocos de 2 ou 4 células com arestas opostas vizinhas.
  • A simplificação cobre exatamente as linhas verdadeiras da FND.
  • A conversão usa só NAND e conserva a função.

Erros frequentes

Um grupo tem de ter 11, 22, 44 ou 88 células em retângulo, sem buracos. Juntar células sem esse formato pode excluir linhas verdadeiras ou incluir linhas falsas.

Voltar à explicação
Precedência, árvore e contraexemplo

Usa a precedência ¬\neg, ∧\land, ∨\lor, →\to, com a implicação associativa à direita. Desenha a árvore de p→q∧¬rp\to q\land\neg r, lista todas as subfórmulas e avalia-a com p=T,q=T,r=Fp=T,q=T,r=F. Compara com (p→q)∧¬r(p\to q)\land\neg r: as duas fórmulas são equivalentes? Se não, apresenta uma atribuição que as distinga.

Pista

Constrói a raiz pela conetiva de menor precedência. Para refutar equivalência, procura uma linha em que o antecedente seja falso.

Solução

A primeira fórmula é p→(q∧¬r)p\to(q\land\neg r):

      →
     / \
    p   ∧
       / \
      q   ¬
          |
          r

As subfórmulas são p,q,r,¬r,q∧¬rp,q,r,\neg r,q\land\neg r e p→(q∧¬r)p\to(q\land\neg r). Na atribuição dada, ¬r=T\neg r=T, q∧¬r=Tq\land\neg r=T e a implicação vale T.

Isso não prova equivalência com (p→q)∧¬r(p\to q)\land\neg r. Com p=F,q=F,r=Tp=F,q=F,r=T, a primeira vale T porque o antecedente é falso; a segunda vale F porque ¬r=F\neg r=F. A posição dos parênteses muda a condição.

Confere a tua resposta:

  • A raiz da primeira fórmula é a implicação.
  • Listei subfórmulas completas e avaliei de baixo para cima.
  • Apresentei uma atribuição com valores finais diferentes.
Voltar à explicação
O que muda quando as premissas mudam

Sejam Γ,Σ\Gamma,\Sigma conjuntos de fórmulas e θ\theta uma fórmula. Prova ou refuta cada afirmação:

  1. Se Γ⊨θ\Gamma\models\theta e Γ⊆Σ\Gamma\subseteq\Sigma, então Σ⊨θ\Sigma\models\theta.
  2. Se Γ⊨θ\Gamma\models\theta e Σ⊨θ\Sigma\models\theta, então Γ∩Σ⊨θ\Gamma\cap\Sigma\models\theta.

Uma refutação deve indicar conjuntos e fórmulas concretos, além da atribuição.

Pista

Acrescentar premissas restringe as atribuições possíveis. Intersectar conjuntos de premissas pode retirar as fórmulas que permitiam obter a conclusão.

Solução

A primeira é verdadeira. Toma uma atribuição vv que satisfaz todas as fórmulas de Σ\Sigma. Como Γ⊆Σ\Gamma\subseteq\Sigma, satisfaz todas as de Γ\Gamma. Pela consequência dada, satisfaz θ\theta. Isto trata qualquer atribuição relevante; se não existir nenhuma, a consequência também vale.

A segunda é falsa. Escolhe Γ={p,p→r}\Gamma=\{p,p\to r\}, Σ={q,q→r}\Sigma=\{q,q\to r\} e θ=r\theta=r. Cada conjunto implica rr por modus ponens, mas Γ∩Σ=∅\Gamma\cap\Sigma=\emptyset. A atribuição p=q=r=Fp=q=r=F satisfaz todas as premissas da interseção vazia e falsifica rr. Não precisa de satisfazer as premissas retiradas.

Confere a tua resposta:

  • Provei a afirmação universal a partir da definição de consequência.
  • No contraexemplo identifiquei os dois conjuntos de premissas e a conclusão.
  • Mostrei que a interseção admite uma atribuição que falsifica a conclusão.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

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

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

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.