Dos reglas que parecen distintas
Una tabla de verdad es una lista con todos los casos posibles de una afirmación lógica y el resultado de cada uno. Con ella decides si dos reglas dicen exactamente lo mismo.
Un servicio de la universidad escribe: «No es cierto que tengas carné y matrícula». Otro programador escribe: «No tienes carné o no tienes matrícula». ¿Dejan pasar a las mismas personas? Con una tabla lo compruebas en cuatro filas.
Al final de esta lección
Nota
Puedo construir una tabla de verdad y decidir si dos enunciados son equivalentes.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Proposición | una frase que es verdadera o falsa, nunca las dos cosas |
| Conectivo | una palabra que une proposiciones: y, o, no, implica |
| Tabla de verdad | la lista de todos los casos con el resultado de cada uno |
| Implicación | la promesa «si P, entonces Q» |
| Equivalentes | dos enunciados con la misma tabla de verdad |
| Tautología | un enunciado verdadero en todos los casos |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una proposición es verdadera o falsa
Una proposición es una frase que solo puede ser verdadera o falsa. «Hoy llueve» lo es. «¿Qué hora es?» no lo es.
Los conectivos unen proposiciones. y es verdadero solo si las dos lo son. o es falso solo si las dos son falsas. no cambia verdadero por falso. Una tabla de verdad los recoge en todos los casos.
Ejemplo resuelto: y, o, no
| P | Q | P y Q | P o Q | no P |
|---|---|---|---|---|
| Falso | Falso | Falso | Falso | Verdadero |
| Falso | Verdadero | Falso | Verdadero | Verdadero |
| Verdadero | Falso | Falso | Verdadero | Falso |
| Verdadero | Verdadero | Verdadero | Verdadero | Falso |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Python calcula y, o, no
python3 -c "print(True and False, True or False, not True)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La tabla de no P
python3 -c "for p in (False, True): print(p, not p)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una implicación solo falla en un caso
La implicación «si P, entonces Q» es una promesa. Una tienda dice: «Si gastas más de 50 euros, el envío es gratis».
Solo rompe la promesa quien gasta más de 50 euros y paga el envío. Si gastas 20 euros, la tienda no ha prometido nada, y la promesa sigue en pie. En Python se escribe (not p) or q.
Ejemplo resuelto: si P, entonces Q
| P: gastas más de 50 | Q: envío gratis | Promesa |
|---|---|---|
| No | No | Se cumple |
| No | Sí | Se cumple |
| Sí | No | Se rompe |
| Sí | Sí | Se cumple |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Las cuatro filas de la implicación
python3 -c "for f in ((0,0),(0,1),(1,0),(1,1)): print(f[0], f[1], int(not f[0] or f[1]))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que, si P es falso, la implicación «si P, entonces Q» también es falsa. No es así. Con P falso nadie ha roto la promesa, y la implicación es verdadera. Solo es falsa con P verdadero y Q falso.
Equivalentes: misma tabla en todas las filas
Dos enunciados son equivalentes si, en cada fila, dan el mismo resultado. Basta una fila distinta para que no lo sean.
Esta revisión fila por fila es una prueba por casos. Comprueba la regla de los dos servicios: «no (P y Q)» frente a «no P o no Q». Las dos columnas coinciden, así que dejan pasar a las mismas personas.
Ejemplo resuelto: la regla de los dos servicios
| P | Q | no (P y Q) | no P o no Q |
|---|---|---|---|
| Falso | Falso | Verdadero | Verdadero |
| Falso | Verdadero | Verdadero | Verdadero |
| Verdadero | Falso | Verdadero | Verdadero |
| Verdadero | Verdadero | Falso | Falso |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Python comprueba las cuatro filas
python3 -c "print(all((not (p and q)) == ((not p) or (not q)) for p in (0, 1) for q in (0, 1)))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una pareja que no es equivalente
python3 -c "print(all((not (p and q)) == ((not p) and (not q)) for p in (0, 1) for q in (0, 1)))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.