> ## Documentation Index
> Fetch the complete documentation index at: https://apuntes.simulab.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Lógica proposicional: tablas de verdad, forma clausal y resolución

> Lógica proposicional explicada: conectivas, tablas de verdad, fórmulas válidas y satisfacibles, consecuencia lógica, forma normal conjuntiva y resolución, con ejemplos resueltos.

<Card title="Abrir el simulador" icon="flask" href="https://simulab.es/matematicas/logica-proposicional">
  Escribe premisas y conclusión y comprueba el razonamiento con la tabla de verdad, la forma clausal y la resolución.
</Card>

«Si el sensor se activa y no hay vigilante, la alarma salta». «Es de España solo si es europeo». ¿Es lo mismo `if (a < b || (a >= b && c == d))` que `if (a < b || c == d)`? Detrás de las tres frases está la misma pregunta: **qué se puede deducir de qué**. La lógica proposicional es la herramienta más sencilla para responderla, y la base de la programación lógica, la verificación de software, los circuitos digitales y buena parte de la inteligencia artificial.

## Lo que vas a aprender

* Traducir frases del lenguaje natural a fórmulas, incluidas las que más confunden ("solo si", "es necesario", "a menos que").
* Leer una fórmula con la prioridad de las conectivas y calcular su valor en una interpretación.
* Clasificar fórmulas en válidas, satisfacibles e insatisfacibles, y conjuntos en consistentes e inconsistentes.
* Decidir si un razonamiento es correcto con una tabla de verdad.
* Pasar cualquier fórmula a forma normal conjuntiva y a forma clausal.
* Demostrar un razonamiento por resolución, derivando la cláusula vacía.

## Cómo se usa el simulador

| Control | Qué hace |
| - | - |
| **Premisas** | Una fórmula por línea (también vale separarlas con `;`) |
| **Conclusión** | Opcional. Si está vacía, se estudian solo las premisas |
| **Botones ¬ ∧ ∨ → ↔ ( )** | Escriben el símbolo donde está el cursor. También valen `~ & \| -> <->` |
| **Ejemplos** | Cargan razonamientos de clase y del laboratorio |
| **Tabla de verdad** | Todas las interpretaciones, con las filas importantes resaltadas. La casilla *subfórmulas* añade una columna por cada subfórmula |
| **Forma clausal** | Los cinco pasos para llegar a la forma normal conjuntiva de cada fórmula |
| **Resolución** | La derivación de la cláusula vacía, numerada y con cada paso justificado |

* Con **premisas y conclusión**, el simulador dice si el razonamiento es correcto y, si no lo es, da un contraejemplo.
* Con **una sola fórmula**, la clasifica: válida, satisfacible o insatisfacible.
* Con **varias fórmulas sin conclusión**, dice si el conjunto es consistente.
* Las proposiciones son letras minúsculas (`p`, `q`, `r`, `p1`…). `V` y `F` son las constantes verdadero y falso.

<Tip>
  Las fórmulas se guardan en la dirección de la página: copia el enlace para compartir un ejercicio concreto.
</Tip>

## Fundamentos teóricos

### Proposiciones y conectivas

Una **proposición** es la unidad mínima de información de la que se puede decir si es verdadera o falsa: "llueve", "Juan es médico". No lo son las preguntas, las exclamaciones ni las frases cuya verdad depende de una variable ("$X$ es mayor que 3"), que pertenecen a la lógica de predicados.

Las proposiciones se combinan con cinco **conectivas**:

| Conectiva | Símbolo | Se lee también como |
| - | - | - |
| Negación | $\lnot p$ | no $p$; es falso que $p$ |
| Conjunción | $p \land q$ | $p$ y $q$; $p$ **pero** $q$; $p$ sin embargo $q$ |
| Disyunción | $p \lor q$ | $p$ o $q$ (o ambos) |
| Condicional | $p \to q$ | si $p$ entonces $q$; $p$ **solo si** $q$; $q$ **es necesario** para $p$; $p$ **es suficiente** para $q$; no $p$ **a menos que** $q$ |
| Bicondicional | $p \leftrightarrow q$ | $p$ si y solo si $q$ |

<Warning>
  "$p$ solo si $q$" es $p \to q$, no $q \to p$: "es de España solo si es europeo" dice que ser de España obliga a ser europeo, no al revés. Lo **necesario** va a la derecha de la flecha y lo **suficiente**, a la izquierda.
</Warning>

### Sintaxis y prioridad

Las **fórmulas bien formadas** se construyen a partir de las atómicas (las proposiciones y las constantes $V$ y $F$): si $F$ y $G$ son fórmulas, también lo son $\lnot F$, $(F \land G)$, $(F \lor G)$, $(F \to G)$ y $(F \leftrightarrow G)$. Para ahorrar paréntesis se usa una prioridad, de más a menos:

$$
\lnot \quad > \quad \land \quad > \quad \lor \quad > \quad \to \quad > \quad \leftrightarrow
$$

Así, $\lnot p \land q \to r$ se lee $((\lnot p \land q) \to r)$. Entre conectivas del mismo nivel manda la de la izquierda: $p \to q \to r$ es $(p \to q) \to r$. El simulador escribe esos paréntesis aunque no hagan falta, porque sin ellos la fórmula se lee mal.

### Semántica: interpretaciones y tablas de verdad

Una **interpretación** asigna V o F a cada proposición. Con $n$ proposiciones distintas hay $2^n$ interpretaciones. El valor de una fórmula se calcula con las tablas de las conectivas:

| $G$ | $H$ | $\lnot G$ | $G \land H$ | $G \lor H$ | $G \to H$ | $G \leftrightarrow H$ |
| - | - | - | - | - | - | - |
| V | V | F | V | V | V | V |
| V | F | F | F | V | **F** | F |
| F | V | V | F | V | V | F |
| F | F | V | F | F | V | V |

La implicación solo es falsa en un caso: antecedente verdadero y consecuente falso. Si el antecedente es falso, la implicación es verdadera ("de lo falso se sigue cualquier cosa"). Si una interpretación hace verdadera una fórmula, es un **modelo** de ella; si la hace falsa, un **contramodelo**.

### Clasificación de fórmulas

| Tipo | Definición |
| - | - |
| **Válida** (tautología) | Verdadera en todas las interpretaciones |
| **Satisfacible** | Verdadera en alguna interpretación |
| **Insatisfacible** (contradicción) | Falsa en todas las interpretaciones |

Toda fórmula válida es satisfacible. Las dos clases se relacionan con el **principio del espejo**:

$$
F \text{ es válida} \iff \lnot F \text{ es insatisfacible}
$$

Un **conjunto** de fórmulas es **consistente** si existe una misma interpretación que las hace verdaderas a todas, e **inconsistente** si no existe. Cuidado: $\{p,\ \lnot p\}$ es inconsistente aunque cada fórmula, por separado, sea satisfacible.

### Equivalencia lógica

Dos fórmulas son **equivalentes**, $F \equiv G$, si tienen el mismo valor en todas las interpretaciones, es decir, si $F \leftrightarrow G$ es válida. Las equivalencias que más se usan:

| Ley | Equivalencia |
| - | - |
| Eliminación de $\to$ | $G \to H \equiv \lnot G \lor H$ |
| Contraposición | $G \to H \equiv \lnot H \to \lnot G$ |
| Eliminación de $\leftrightarrow$ | $G \leftrightarrow H \equiv (G \to H) \land (H \to G)$ |
| Doble negación | $\lnot\lnot G \equiv G$ |
| De Morgan | $\lnot(G \land H) \equiv \lnot G \lor \lnot H \qquad \lnot(G \lor H) \equiv \lnot G \land \lnot H$ |
| Distributivas | $G \lor (H \land J) \equiv (G \lor H) \land (G \lor J)$ |
| Absorción | $G \land (H \lor G) \equiv G \qquad G \lor (H \land G) \equiv G$ |

### Consecuencia lógica: cuándo un razonamiento es correcto

$Q$ es **consecuencia lógica** de las premisas $P_1, \dots, P_n$, y se escribe $\{P_1, \dots, P_n\} \models Q$, si todo modelo común de las premisas es también modelo de $Q$. Un razonamiento es **correcto** cuando la conclusión es consecuencia lógica de las premisas. Hay dos formas equivalentes de comprobarlo:

$$
\textbf{Teorema I:}\quad \{P_1, \dots, P_n\} \models Q \iff P_1 \land \dots \land P_n \to Q \text{ es válida}
$$

$$
\textbf{Teorema II:}\quad \{P_1, \dots, P_n\} \models Q \iff \{P_1, \dots, P_n, \lnot Q\} \text{ es inconsistente}
$$

La **tabla de verdad** usa el Teorema I: se buscan las filas en las que todas las premisas son verdaderas y se mira la conclusión. Si en alguna es falsa, esa fila es un **contraejemplo** y el razonamiento no es correcto. El método funciona siempre, pero con $n$ proposiciones hay $2^n$ filas: con 10 ya son 1024.

### Forma normal conjuntiva y forma clausal

Un **literal** es una proposición o su negación; $L^c$ es su complementario ($p$ y $\lnot p$). Una fórmula está en **forma normal conjuntiva** (FNC) si es una conjunción de disyunciones de literales, como $(p \lor \lnot q) \land (\lnot p \lor r \lor s) \land p$. Cada disyunción es una **cláusula**, y el conjunto de cláusulas es la **forma clausal** (FC). La cláusula sin literales es la **cláusula vacía** $\square$, que es insatisfacible.

Cualquier fórmula se puede pasar a FNC en cinco pasos, los mismos que muestra el simulador:

<Steps>
  <Step title="Eliminar ↔">
    $F \leftrightarrow G \equiv (F \to G) \land (G \to F)$
  </Step>

  <Step title="Eliminar →">
    $F \to G \equiv \lnot F \lor G$
  </Step>

  <Step title="Meter las negaciones">
    Con las leyes de De Morgan, hasta que solo afecten a proposiciones, y quitando las dobles negaciones.
  </Step>

  <Step title="Distribuir ∨ sobre ∧">
    $F \lor (G \land H) \equiv (F \lor G) \land (F \lor H)$
  </Step>

  <Step title="Simplificar">
    Quitar las cláusulas que contienen un literal y su complementario (son tautologías), los literales repetidos y las cláusulas absorbidas por otras más cortas.
  </Step>
</Steps>

### Resolución

La resolución (Robinson, 1965) usa **una sola regla de inferencia**, muy fácil de automatizar:

$$
\frac{L \lor F \qquad L^c \lor G}{F \lor G}
$$

Se quita un par de literales complementarios y se junta lo que queda de las dos cláusulas: el resultado es la **resolvente**. Funciona porque, si $L$ es falso, tiene que ser verdad $F$, y si $L$ es verdadero, tiene que serlo $G$; en los dos casos $F \lor G$ es verdad.

Para demostrar un razonamiento se trabaja **por refutación**, con el Teorema II:

1. Se pasan a forma clausal las premisas y la **negación** de la conclusión.
2. Se resuelven pares de cláusulas y se añaden las resolventes.
3. Si aparece la cláusula vacía $\square$, el conjunto es inconsistente y el razonamiento es **correcto**.
4. Si se han resuelto todos los pares posibles sin llegar a $\square$, el conjunto es consistente y el razonamiento **no es correcto**.

El simulador prueba todos los pares nivel a nivel (cada cláusula nueva contra todas las anteriores), descarta las tautologías y las cláusulas absorbidas, y al final muestra solo las resolventes que llevan a $\square$.

<Tip>
  Para ver si una sola fórmula $F$ es válida por resolución, se aplica el principio del espejo: se pasa $\lnot F$ a forma clausal y se busca $\square$.
</Tip>

## Ejemplos resueltos

<AccordionGroup>
  <Accordion title="Ejemplo 1 · El paraguas, con la tabla de verdad" defaultOpen>
    "Si llueve y no hace viento, llevo abierto el paraguas. No llevo abierto el paraguas, pero llueve. Por tanto, hace viento."

    **Formalización:** con $p$: llueve, $q$: hace viento y $r$: llevo el paraguas abierto,

    $\{p \land \lnot q \to r,\ \lnot r \land p\} \models q$

    **Tabla:** la segunda premisa, $\lnot r \land p$, solo es verdadera si $p = V$ y $r = F$. Quedan dos filas: con $q = V$, la primera premisa vale $F \to F = V$; con $q = F$, vale $V \to F = F$. Las dos premisas solo son verdaderas a la vez en la fila $p = V,\ q = V,\ r = F$, y ahí la conclusión $q$ es verdadera.

    **Conclusión:** no hay contraejemplo. El razonamiento es correcto.
  </Accordion>

  <Accordion title="Ejemplo 2 · El paraguas, por resolución">
    **Forma clausal de las premisas:** $p \land \lnot q \to r \equiv \lnot(p \land \lnot q) \lor r \equiv \lnot p \lor q \lor r$. La segunda da dos cláusulas: $\lnot r$ y $p$.

    **Negación de la conclusión:** $\lnot q$.

    1. $\lnot p \lor q \lor r$ (premisa 1)
    2. $\lnot r$ (premisa 2)
    3. $p$ (premisa 2)
    4. $\lnot q$ (negación de la conclusión)
    5. $\lnot p \lor q$, resolviendo 1 y 2 sobre $r$
    6. $q$, resolviendo 3 y 5 sobre $p$
    7. $\square$, resolviendo 4 y 6 sobre $q$

    Sale la cláusula vacía: el razonamiento es correcto.
  </Accordion>

  <Accordion title="Ejemplo 3 · Forma clausal con un bicondicional">
    Pasar $\lnot(p \leftrightarrow \lnot q)$ a forma clausal.

    **Eliminar ↔:** $\lnot\big((p \to \lnot q) \land (\lnot q \to p)\big)$

    **Eliminar →:** $\lnot\big((\lnot p \lor \lnot q) \land (\lnot\lnot q \lor p)\big)$

    **Meter las negaciones:** $(p \land q) \lor (\lnot q \land \lnot p)$

    **Distribuir:** $(p \lor \lnot q) \land (p \lor \lnot p) \land (q \lor \lnot q) \land (q \lor \lnot p)$

    **Simplificar:** las cláusulas $p \lor \lnot p$ y $q \lor \lnot q$ son tautologías y desaparecen. FC: $\{p \lor \lnot q,\ \lnot p \lor q\}$, que es justo $p \leftrightarrow q$.
  </Accordion>

  <Accordion title="Ejemplo 4 · Un razonamiento incorrecto">
    "Si estudio, apruebo. He aprobado. Por tanto, he estudiado": $\{p \to q,\ q\} \models p$.

    En la fila $p = F,\ q = V$ las dos premisas son verdaderas ($F \to V = V$ y $q = V$) y la conclusión es falsa. Es un **contraejemplo**: el razonamiento no es correcto. Es la falacia de afirmar el consecuente.

    Por resolución: las cláusulas $\lnot p \lor q$, $q$ y $\lnot p$ no tienen ningún par complementario que dé algo nuevo, así que nunca aparece $\square$.
  </Accordion>

  <Accordion title="Ejemplo 5 · Clasificar una fórmula">
    ¿Es válida $\lnot p \lor q \land \lnot q \to \lnot p$?

    Con la prioridad, es $(\lnot p \lor (q \land \lnot q)) \to \lnot p$. Como $q \land \lnot q \equiv F$ y $\lnot p \lor F \equiv \lnot p$, la fórmula equivale a $\lnot p \to \lnot p$, que es verdadera siempre. **Es válida.**

    En cambio, $p \to q \lor r$ es satisfacible pero no válida: es falsa solo con $p = V,\ q = F,\ r = F$.
  </Accordion>
</AccordionGroup>

## Experimenta con el simulador

<Steps>
  <Step title="Busca el contraejemplo">
    Carga la "Falacia del consecuente" y mira en la tabla qué fila sale en rojo. Cambia la segunda premisa por $\lnot q$ y la conclusión por $\lnot p$ (es el *modus tollens*): ¿desaparece el contraejemplo?
  </Step>

  <Step title="Tres métodos, un resultado">
    Con el ejemplo del laboratorio 5b, compara la tabla de verdad (64 filas) con la resolución. ¿Cuántas cláusulas hacen falta para llegar a $\square$?
  </Step>

  <Step title="El principio del espejo">
    Escribe solo $p \lor \lnot p$, sin conclusión. Después escribe $\lnot(p \lor \lnot p)$. ¿Qué sale en cada caso en la pestaña de resolución?
  </Step>

  <Step title="Consistente o no">
    Escribe $p \to q$, $p$ y $\lnot q$ como premisas sin conclusión. Quita una de las tres: ¿qué interpretación hace verdaderas a las otras dos?
  </Step>

  <Step title="La prioridad importa">
    Escribe $p \to q \to r$ y $p \to (q \to r)$ como dos fórmulas sueltas y activa las subfórmulas en la tabla. ¿Son equivalentes?
  </Step>
</Steps>

## Errores frecuentes

* **Traducir "p solo si q" como $q \to p$.** Es $p \to q$.
* **Pensar que $p \to q$ es falsa cuando $p$ es falsa.** Solo es falsa con $p$ verdadera y $q$ falsa.
* **Confundir satisfacible con válida.** Que una fórmula sea verdadera en alguna fila no basta para que sea una tautología.
* **Olvidar negar la conclusión** antes de resolver. Si se resuelve con $Q$ en lugar de $\lnot Q$, no se está demostrando nada.
* **Resolver sobre dos pares a la vez.** De $p \lor q$ y $\lnot p \lor \lnot q$ no se deduce $\square$: cada resolución quita un solo par, y aquí cualquier resolvente es una tautología.
* **Distribuir al revés.** Para la FNC se distribuye $\lor$ sobre $\land$, no $\land$ sobre $\lor$ (eso da la forma normal disyuntiva).

## Limitaciones

La lógica proposicional no puede hablar de objetos ni de sus propiedades. "Todos los hombres son mortales; Sócrates es hombre; luego Sócrates es mortal" es un razonamiento correcto que aquí no se puede demostrar: hacen falta los cuantificadores ($\forall$, $\exists$) de la **lógica de predicados**.

Además, comprobar si una fórmula es satisfacible (el problema SAT) es NP-completo: no se conoce ningún método que lo haga en tiempo polinómico. La tabla de verdad crece como $2^n$ y la resolución puede generar muchísimas cláusulas. El simulador dibuja tablas de hasta 7 proposiciones y se detiene al llegar a 3000 cláusulas. Aun así, los resolvedores SAT modernos resuelven problemas industriales con millones de variables.

## Un poco de historia

**Aristóteles** estudió los silogismos en el siglo IV a. C., pero la lógica como cálculo nace con **George Boole**, que en 1854 trató las proposiciones con las reglas del álgebra. **Gottlob Frege** dio en 1879 el primer sistema formal completo. En 1935 **Gerhard Gentzen** propuso la deducción natural, que imita cómo razonan las personas, y en 1965 **John Alan Robinson** inventó la resolución, pensada para que razonen las máquinas. De ella salió el lenguaje **Prolog** (1972), que ejecuta programas resolviendo cláusulas de Horn.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Qué diferencia hay entre ⊨ y ⊢?">
    $\Gamma \models Q$ es la consecuencia lógica, definida con interpretaciones (semántica). $\Gamma \vdash Q$ significa que $Q$ se **deriva** de $\Gamma$ aplicando reglas de inferencia (sintaxis). La resolución es correcta y completa para la refutación: $\Gamma \models Q$ si y solo si de $\Gamma \cup \{\lnot Q\}$ se deriva $\square$.
  </Accordion>

  <Accordion title="¿Por qué de unas premisas inconsistentes se deduce cualquier cosa?">
    Porque no hay ninguna interpretación que las haga verdaderas a la vez, así que no puede haber ningún contraejemplo. Por resolución, $\square$ ya sale de las premisas sin usar la conclusión.
  </Accordion>

  <Accordion title="¿Qué es una cláusula de Horn?">
    Una cláusula con, como mucho, un literal positivo, como $\lnot p \lor \lnot q \lor r$, que equivale a $p \land q \to r$. Son las reglas de Prolog, y con ellas la satisfacibilidad se decide en tiempo lineal.
  </Accordion>

  <Accordion title="¿Sirve esto para simplificar condiciones en un programa?">
    Sí. Con $p$ = `a < b` y $q$ = `c == d`, la condición `a < b || (a >= b && c == d)` es $p \lor (\lnot p \land q)$, equivalente a $p \lor q$. Escríbela en el simulador como $p \lor (\lnot p \land q) \leftrightarrow p \lor q$ y verás que es válida.
  </Accordion>

  <Accordion title="¿Qué tiene que ver con el álgebra de Boole?">
    Es la misma estructura con otra notación: ∧ es el producto, ∨ la suma y ¬ la negación (o la barra). Lo que en lógica es una tautología, en electrónica es un circuito cuya salida vale siempre 1.
  </Accordion>
</AccordionGroup>

## Temas relacionados

<CardGroup cols={3}>
  <Card title="Tabla de verdad desde una expresión" icon="table" href="/electronica/logica-combinacional/expresiones">
    La misma idea con la notación del álgebra de Boole, y el circuito de puertas.
  </Card>

  <Card title="Mapas de Karnaugh" icon="table-cells" href="/electronica/logica-combinacional/karnaugh">
    Simplificación de funciones lógicas de hasta cuatro variables.
  </Card>

  <Card title="Puertas lógicas" icon="microchip" href="/electronica/logica-combinacional/puertas-logicas">
    AND, OR, NOT, XOR y sus tablas de verdad.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.