Saltar al contenido

Lección 6: Las leyes de De Morgan

Cómo mover un NOT a través de AND y OR sin cambiar el significado: la negación de una conjunción da una disyunción de negaciones, y al revés. Cuatro pasos, nivel intermedio, unos doce minutos, que terminan en la forma normal negativa.

Nivel: intermedio12 min11 afirmaciones de esta lección fueron confirmadas por el comprobador exacto al compilar

Lleva NOT a través de AND y OR correctamente: la negación de una conjunción da una disyunción de negaciones, y viceversa.

El primer paso niega una regla de puerta: NOT (has_key AND knows_code) es NOT has_key OR NOT knows_code, la puerta sigue cerrada cuando falta cualquiera de las dos cosas. El segundo niega un OR: NOT (member OR invited) es NOT member AND NOT invited, ni lo uno ni lo otro. El tercer paso es el desliz clásico, NOT A AND NOT B ofrecido como negación de A AND B, mostrado incorrecto en una fila concreta. El cuarto aplica las leyes repetidamente a NOT ((A OR B) AND C), llegando a NOT (A OR B) OR NOT C y después a (NOT A AND NOT B) OR NOT C, donde cada NOT está sobre una entrada.

La lección lleva cinco afirmaciones verificadas: las dos leyes, la no equivalencia del desliz, y los dos pasos de reescritura del ejemplo anidado. Los ejercicios te piden empujar NOT hacia dentro en dos expresiones, encontrar la asignación que expone el desliz, y clasificar NOT (A OR B) <-> (NOT A AND NOT B), que es una tautología porque la ley se cumple en todas las filas.

La forma normal negativa, el punto final del cuarto paso, es la primera etapa del conversor a formas normales del motor y de sus construcciones solo con NAND y solo con NOR; la página de la ley de De Morgan demuestra las dos identidades, y las páginas de errores sobre «NOT sobre AND» y «ni, ni» son las dos mitades por separado.

Haz esta lección de forma interactiva en la app

Pasos

1. NOT sobre AND

Una puerta se abre con la llave y el código. Permanece cerrada cuando eso no ocurre: NOT (has_key AND knows_code).

Según De Morgan, es lo mismo que NOT has_key OR NOT knows_code: la puerta sigue cerrada si falta cualquiera de las dos cosas. El AND se convierte en OR cuando el NOT pasa al interior.

stays_shut := NOT (has_key AND knows_code) · salidarewritten := NOT has_key OR NOT knows_code · salida

has_key: la persona tiene la llave; knows_code: la persona conoce el código;

NOT sobre AND
#has_keyknows_codestays_shutrewritten
0FALSOFALSOVERDADEROVERDADERO
1FALSOVERDADEROVERDADEROVERDADERO
2VERDADEROFALSOVERDADEROVERDADERO
3VERDADEROVERDADEROFALSOFALSO

Compara stays_shut con rewritten: el verificador demuestra que son equivalentes.

equivalent stays_shut / rewritten · se cumple

2. NOT sobre OR

«Ni socia ni invitada» es NOT (member OR invited).

Segunda ley de De Morgan: equivale a NOT member AND NOT invited. El OR se convierte en AND: ni… ni significa que faltan las dos cosas.

neither := NOT (member OR invited) · salidaboth_missing := NOT member AND NOT invited · salida

member: la persona es socia; invited: la persona tiene una invitación;

NOT sobre OR
#memberinvitedneitherboth_missing
0FALSOFALSOVERDADEROVERDADERO
1FALSOVERDADEROFALSOFALSO
2VERDADEROFALSOFALSOFALSO
3VERDADEROVERDADEROFALSOFALSO

Haz que neither valga TRUE. ¿En cuántas de las cuatro filas vale TRUE?

equivalent neither / both_missing · se cumple

3. El error clásico

Es tentador «repartir» el NOT sin cambiar el operador, pero NOT (A AND B) no es NOT A AND NOT B.

Difieren, por ejemplo, con A=TRUE, B=FALSE: la primera da TRUE y el error da FALSE. Siempre que metas un NOT hacia dentro, intercambia AND y OR.

correct := NOT (A AND B) · salidaslip := NOT A AND NOT B · salida
El error clásico
#ABcorrectslip
0FALSOFALSOVERDADEROVERDADERO
1FALSOVERDADEROVERDADEROFALSO
2VERDADEROFALSOVERDADEROFALSO
3VERDADEROVERDADEROFALSOFALSO

Ajusta A=TRUE, B=FALSE y compara correct con slip.

not-equivalent correct / slip · se cumple

4. Llevar NOT hasta el fondo

Aplica las leyes repetidamente hasta llegar a la forma normal negativa, donde NOT afecta directamente a las entradas:

NOT ((A OR B) AND C) → NOT (A OR B) OR NOT C → (NOT A AND NOT B) OR NOT C.

Cada paso es una equivalencia, así que el resultado es equivalente al original, y Tangibool lo confirma con una comprobación exacta.

original := NOT ((A OR B) AND C) · salidamiddle := NOT (A OR B) OR NOT C · salidapushed_in := (NOT A AND NOT B) OR NOT C · salida
Llevar NOT hasta el fondo
#ABCoriginalmiddlepushed_in
0FALSOFALSOFALSOVERDADEROVERDADEROVERDADERO
1FALSOFALSOVERDADEROVERDADEROVERDADEROVERDADERO
2FALSOVERDADEROFALSOVERDADEROVERDADEROVERDADERO
3FALSOVERDADEROVERDADEROFALSOFALSOFALSO
4VERDADEROFALSOFALSOVERDADEROVERDADEROVERDADERO
5VERDADEROFALSOVERDADEROFALSOFALSOFALSO
6VERDADEROVERDADEROFALSOVERDADEROVERDADEROVERDADERO
7VERDADEROVERDADEROVERDADEROFALSOFALSOFALSO

Compara original con pushed_in y luego prueba un paso intermedio propio.

equivalent original / middle · se cumpleequivalent original / pushed_in · se cumple

Ejercicios

  1. Reescribe NOT (member OR invited) de modo que NOT solo afecte a entradas individuales. (write-equivalent)
  2. Lleva el NOT de NOT (A AND (B OR NOT C)) hasta las entradas. (write-equivalent)
  3. Demuestra que el error de verdad lo es: encuentra una asignación en la que correct y slip difieran. (find-assignment)
  4. Clasifica NOT (A OR B) <-> (NOT A AND NOT B). (classify)

Haz esta lección de forma interactiva en la app

Preguntas

¿Las leyes funcionan con tres o más operandos?

Sí: NOT (A AND B AND C) es NOT A OR NOT B OR NOT C, toda la cadena se invierte de una vez. El motor aplica la ley a la compuerta n-aria en un paso.

¿Para qué sirve la forma normal negativa?

Es la forma desde la que parte toda conversión a forma normal, y la forma en que una fórmula es más fácil de leer en voz alta: cada NOT se aplica a una entrada. El cuarto paso la produce a mano; el conversor lo hace por ti.

Relacionado

Leyes

Herramientas

Ejercicios

Véase también

Lecciones

Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.