Expresiones Booleanas y Tablas de Verdad
Expresiones Booleanas y Tablas de Verdad
Expresiones booleanas
35
36 2. Expresiones booleanas
n este capítulo trabajaremos sobre las expresiones booleanas, cuyo nombre se debe a George
E Boole (1815–1864). Las expresiones booleanas son utilizadas con frecuencia en distintos
lenguajes de programación, por lo tanto el material de éste capítulo será familiar para aquellos
que tengan alguna noción de Pascal, C, FORTRAN o algún otro lenguaje. Aquí también veremos
cómo expresar frases en español a través de expresiones booleanas.
id ¬
true true true false false
false true false true false
La tabla anterior es conocida como tabla de verdad, las entradas en la tabla de verdad tienen el
significado siguiente: si p es una variable booleana, la primer columna se reserva para p y sus
distintos estados, mientras que en cada una de las siguientes aparece el resultado de la aplicación
de cada función sobre cada uno de los estados. Por ejemplo, en la segunda columna de la derecha
vemos que [Link] = true y id. f alse = f alse, esta función recibe el nombre de función idéntica
o también identidad. También observamos en la primera y la última columna dos funciones
constantes que no tienen asignado un nombre específico. La función simbolizada con ¬ se llama
negación y corresponde al operador unario not, por ejemplo notaremos ¬ f alse = true.
Si ahora consideramos todas las funciones booleanas de dos argumentos, es decir definidas
sobre el conjunto
§Versión 2015.1
2.1. Sintaxis y evaluación de expresiones booleanas 37
≡ n .
a n
n o
∨ ⇐ ⇒ = ∧ d , r
t t t t t t t t t t f f f f f f f f
t f t t t t f f f f t t t t f f f f
f t t t f f t t f f t t f f t t f f
f f t f t f t f t f t f t f t f t f
Observemos que en la tabla hemos abreviado true con la letra t y false con la letra f.
Sólo ocho de las funciones que aparecen en la tabla anterior son suficientemente útiles como
para ser conocidas por un nombre particular, y son llamadas operadores booleanos o conectores.
Por ejemplo la aplicación de las funciones correspondientes a la segunda y tercer columna se
denota b ∨ c y x ⇐ y respectivamente. A continuación daremos un detalle de cada uno de los
operadores.
El operador = es la igualdad habitual. La expresión b = c se lee “b es igual a c”. Al operador
booleano igualdad también se le da el nombre de equivalencia y se lo nota con un segundo
símbolo, ≡. La expresión b ≡ c se lee “b es equivalente a c”, también se dice que los operandos
b y c son equivalentes.
El operador , es la desigualdad habitual. La expresión b , c se lee “b es distinto de c”. El
operador , satisface (b , c) = ¬ (b = c). Al operador booleano desigualdad también se le da
el nombre de discrepancia y se lo nota con un segundo símbolo, .. Se lo suele llamar también
disyunción exclusiva u operador xor, dado que resulta verdadero cuando exactamente uno de
los dos operandos lo es.
El operador ∨ es llamado disyunción. La expresión b ∨ c se lee “b o c” dado que el resultado
es verdadero cuando al menos uno de los operandos lo es.
El operador ∧ es llamado conjunción. La expresión b∧c se lee “b y c”, dado que el resultado
es verdadero cuando ambos operandos lo son.
El operador ⇒ es llamado implicancia. La expresión b ⇒ c se lee “b implica c” o bien
“si b entonces c”, el primer operando b, es llamado antecedente y el segundo c, consecuente.
b ⇒ c será verdadera en todos los casos excepto cuando b sea verdadera y c falsa. En la tabla
de verdad se observa un resultado poco intuitivo, y es que si el antecedente es falso, el resultado
de la expresión b ⇒ c será verdadero, sin importar el valor del consecuente, esto es consistente
con la interpretación en español de frases como “Si la economía mejoró con esos ajustes, yo soy
Gardel”. En este sentido la frase representa una proposición verdadera simplemente porque la
economía no mejoró con esos ajustes y de este modo, falso implica cualquier situación posible
o imposible. Veremos con más detalle la implicación en secciones posteriores.
El operador ⇐ es llamado consecuencia. La expresión b ⇐ c se lee “b sigue de c”. En la
tabla de verdad se puede ver que son equivalentes c ⇒ b y b ⇐ c. Se introduce en nuestras
expresiones debido a su utilidad en el proceso de construcción de demostraciones.
Los nombres de los operadores “nand” y “nor” siguen de “not and”(no y) y “not or”( no o)
§Versión 2015.1
38 2. Expresiones booleanas
1. operador ¬
2. operador =
3. operadores ∧ y ∨
4. operadores ⇒y ⇐
5. operadores ≡ y .
p∨q⇒r ≡ p⇒r∧q⇒r
p ∧ ¬q ⇒ ¬p
en el estado {(p, true) , (q, true)} se calcula así: si q es verdadera, de acuerdo a la tabla del opera-
dor ¬, ¬q es falsa, admás cuando uno de los argumentos es falso (en este caso ¬q), el resultado
de la aplicación del operador ∧, es falso. Por último, la columna de la tabla correspondiente al
operador ⇒, nos dice que si el primer argumento es falso, el resultado es verdadero independien-
temente del valor del segundo argumento. Observemos que las operaciones fueron realizadas de
acuerdo a las reglas de precedencia citadas anteriormente.
Veamos ahora como evaluar una expresión booleana cualquiera utilizando tablas de verdad.
Los posibles valores de las variables booleanas involucradas en la expresión se disponen en las
primeras columnas de la tabla, mientras que en las siguientes columnas se colocan los valores
§Versión 2015.1
2.4. Lenguaje y Lógica 39
parciales de los operadores lógicos intervinientes, en orden y de acuerdo a las reglas de pre-
cedencia, hasta colocar en la última columna de la tabla los valores de verdad asociados a la
expresión. Cada fila describe un estado particular de las variables y la correspondiente evalua-
ción de acuerdo a cada operador en la expresión.
Por ejemplo, queremos evaluar la expresión p∧¬q ⇒ r en todas las combinaciones posibles
de valores de las variables p, q y r, entonces construimos:
p q r ¬q p ∧ ¬q p ∧ ¬q ⇒ r
true true true false false true
true true false false false true
true false true true true true
true false false true true false
false true true false false true
false true false false false true
false false true true false true
false false false true false true
p p⇒p p p∧p p∧ p≡ p
true true true true true
false true false false true
La expresión booleana p ∨ q se satisface en cualquier estado (p, true), por lo tanto es satis-
factible, sin embargo no es válida pues no se satisface en el estado (p, f alse), es decir, no es una
tautología.
(2.4) Definición. Una contradicción es una expresión booleana cuya evaluación en cualquier
estado es siempre f alse.
Observemos que la negación de una tautología es entonces una contradicción, son ejemplos
de contradicción p . p o también p ∧ ¬p.
p p .p p ¬p p ∧ ¬p
true false true false false
false false false true false
§Versión 2015.1
40 2. Expresiones booleanas
2.4.1. Proposiciones
La idea básica de traducción consiste en identificar las proposiciones elementales de un
enunciado que serán representadas mediante variables booleanas y componerlas usando los ope-
radores booleanos asociados a los conectivos del lenguaje que aparecen en el enunciado. Los
conectivos del lenguaje serán traducidos a su interpretación “obvia”, aunque veremos algunas
sutilezas de esta traducción.
Por ejemplo, la oración
p ∧ ¬ (q ∨ r)
(2.5) Observación. La palabra “pero” se traduce como una conjunción, puesto que afirma
ambas componentes. Por otro lado la disyunción usada es inclusiva, ya que podría haber
defendido la felicidad de su madre la propia o ambas.
2.4.2. La Negación
La operación de negación aparece usualmente en el lenguaje insertando un “no” en la po-
sición correcta del enunciado que se quiere negar, alternativamente puede anteponerse la frase
“es falso que” o la frase “no se da el caso que”.
§Versión 2015.1
2.4. Lenguaje y Lógica 41
Expresiones Operador
No “p”
Es falso “p”
No es cierto “p” ¬
No es el caso “p”
No se da el caso que “p”
2.4.3. La Conjunción
La conjunción aparece en el lenguaje con la palabra “y”, uniendo dos proposiciones. Tam-
bién se interpretarán como conjunción las palabres “pero” y “aunque”. Por ejemplo, si con p y
q representamos las proposiciones siguientes:
p : Llueve
q : No hace frío
Es importante notar que no siempre la palabra “y” representa una conjunción, como es el
caso de la siguiente frase:
aquí la palabra “y” se usa para expresar una relación entre Joyce y Picasso.
En resumen, algunas de las traducciones para este operador son:
§Versión 2015.1
42 2. Expresiones booleanas
Expresiones Operador
“p” y “q”
“p” pero “q”
“p” aunque “q”
“p” sin embargo “q” ∧
“p” no obstante “q”
“p” a pesar de “q”
“p” a menos “q”
“p” igualmente “q”
Para ser emperador hay que tener el apoyo de la nobleza o del pueblo
obviamente teniendo el apoyo de ambos se está también en condiciones de ser emperador. Esta
proposición la expresamos como p ∨ q , donde p y q son las siguientes proposiciones elemen-
tales:
p : Para ser emperador hay que tener el apoyo de la nobleza
q : Para ser emperador hay que tener el apoyo del pueblo
Otros ejemplos podrían ser:
§Versión 2015.1
2.4. Lenguaje y Lógica 43
donde se interpreta que el consejero no puede pertenecer simultáneamente a las dos clase socia-
les. Utilizaremos para este caso el operador discrepancia que simbolizamos como ., por tanto
si llamamos
p : El consejero del emperador pertenece a la nobleza
q : El consejero del emperador pertenece al pueblo
la proposición (2.2) se expresa así : p . q.
En latín existen palabras diferentes para la disyunción inclusiva y exclusiva. La palabra “vel”
se usa para la primera y la palabra “aut” para la segunda. El símbolo utilizado en lógica para la
disyunción proviene precisamente de la palabra latina.
En resumen, algunos conectores que podemos traducir como disyunciones son:
Expresiones Operador
“p” o “q”
“p” o “q” o ambas/pero no ambas
al menos “p” o “q” ∨, .
mínimo “p” o “q”
“p” o bien “q”
2.4.5. La Implicación
a) Construcción Si . . . , entonces . . .
La implicación lógica suele representar lo que en el lenguaje natural se expresa mediante la
construcción: si. . . ,entonces . . . . Por ejemplo, la siguiente proposición compuesta
§Versión 2015.1
44 2. Expresiones booleanas
b) Construcción Si . . . , . . .
En la construcción si. . . , . . . es similar a la anterior, sólo que se ha omitido la palabra
“entonces”, y en este caso aparece el símbolo de puntuación “,” (la coma). Por ejemplo,
p : Viajamos en tren
q : Sacaremos los pasajes con anticipación
y simbolizaremos como p ⇒ q.
c) Construcción . . . si, . . .
En este caso, la construcción “q , si p ”, el orden del antecedente y del consecuente se ha
invertido: primero esta dado el consecuente, y luego a continuación de la palabra “si” sigue el
antecedente. Por ejemplo, en la proposición:
§Versión 2015.1
2.4. Lenguaje y Lógica 45
p : El seguro pagará
q : Se produce un incendio
es equivalente a,
§Versión 2015.1
46 2. Expresiones booleanas
e) Construcción cuando . . . , . . .
En este caso analizaremos la construcción “cuando p , q ”. La palabra “cuando” reemplaza
usualmente al “si” como por ejemplo en la siguiente proposición:
p: Hay tormentas
q: Se interrumpen las comunicaciones satelitales
la cual simbolizaremos como p ⇒ q.
Observemos que el matiz temporal de la palabra “cuando” la lógica proposicional no lo
tiene en cuenta. La construcción “cuando p , q”, equivale a “si p , entonces q”, y por lo tanto
la simbolizaremos como p ⇒ q. De igual modo, la construcción “q cuando p ” equivale a “q si
p ” que simbolizaremos como q ⇐ p.
su f iciente ⇒ necesario
Veamos algunos ejemplos de traducciones para frases que contienen las expresiones ante-
riores.
§Versión 2015.1
2.4. Lenguaje y Lógica 47
Para obtener una beca es necesario tener un buen promedio en la carrera (2.14)
f) El condicional contrafáctico
Existen ciertas dudas acerca del valor de verdad (o del significado lógico) de frases como
Para la lógica clásica que presentamos aquí, la frase anterior es verdadera (mirando la tabla
de verdad del operador ⇒), pues ambos antecedente y consecuente son falsos, lo cual hace
verdadera a la proposición.
Normalmente se usa una implicación con un consecuente falso como una manera elíptica de
negar el antecedente. Por ejemplo, decir
es una manera elegante de decir que la economía no mejoró con los ajustes.
2.4.6. La Equivalencia
De todos modos no existe ninguna construcción en el lenguaje corriente que represente
fielmente a la equivalencia lógica. Es ésta la razón quizá por la cual la equivalencia suele tener
un lugar secundario en los libros de lógica. Nosotros no seguiremos esa tradición, dado que el
uso de la lógica en el desarrollo de programas, la equivalencia tiene un rol fundamental. Como
último ejemplo de la inadecuación del lenguaje para parafrasear la equivalencia, presentamos la
frase (verdadera en lenguaje corriente) acerca de las capacidades de Juan.
§Versión 2015.1
48 2. Expresiones booleanas
p : f es biyectiva
q : f es inyectiva
r : f es sobreyectiva
D = 0 es una condición necesaria y suficiente para que el polinomio admita una raíz doble
P0 ≡ P1 ≡ · · · ≡ Pn
§Versión 2015.1
2.5. Ejercicios 49
de la misma considerando que cada subexpresión f alse ≡ f alse en la secuencia puede ser re-
emplazada por true, hasta que se consiga o bien una expresión falsa o ninguna, en cuyo caso
la secuencia es falsa o verdadera. Estos reemplazo de valores, corresponden a la asignación de
valores de verdad que dimos para la tabla de verdad del operador ≡.
Veamos algunos ejemplos de aplicación de esta propiedad: podemos determinar sin ninguna
manipulación formal que
f alse ≡ f alse ≡ f alse ≡ true
es f alse, porque tres de sus expresiones son falsas. Del mismo modo que
2.5. Ejercicios
2.5.1. Ejercicios sobre Expresiones Booleanas
2.1 Evaluar las siguientes expresiones en el estado {(p, true), (q, f alse), (r, f alse)}
a) (p ∨ q) ∧ r e) (p ≡ q) ≡ r
b) (p ∧ q) ∨ r
f) (p ⇒ q) ⇒ r
c) p ∨ (q ∧ r)
d) p ≡ (q ≡ r) g) (p ∧ q) ⇒ r
2.2 Utilizando la tabla de precedencia de las operaciones booleanas y las propiedades de aso-
ciatividad de cada operación booleana elimine los paréntesis innecesarios de las siguientes
expresiones:
§Versión 2015.1
50 2. Expresiones booleanas
a) p ∨ q ⇒ r ≡ (p ⇒ r) ∧ (q ⇒ r) d) (p ∧ q) ∨ r ∨ t ⇒ p ∨ q
b) p ⇒ q ≡ p ∨ q ≡ q e) (p ⇒ q ∨ s ⇒ t) ∧ r ⇐ s ∧ q
c) p ⇒ q ≡ ¬p ∨ q f) p . (q ≡ r) ⇒ (t ⇐ r) ⇒ s
a) (p ∨ q ≡ q ∨ p)[p, q := p ∧ q, p ∨ q]
b) (p ∨ q ≡ q ∨ p)[q, p := p ∨ q, p ∨ q]
c) (p ∨ q ≡ p ≡ q ≡ p ∧ q)[q, p := p, q ∨ q]
d) ((p ∨ q ≡ q) ≡ p ⇒ q)[p, q := p ≡ r, q ⇒ ¬r]
e) (p ∧ (q ∧ p) ≡ p ∧ q)[q, p := p ∧ (q ∨ p), r ∨ ¬r]
f) (true ∨ r . f alse)[p := true][r := f alse]
g) (true ∨ t ⇒ ( f alse ≡ r ≡ p ≡ t ∧ s)[t, s := true])[r := t][t := f alse]
2.5 Completar utilizando la Regla de Leibniz. En cada caso decidir cuales son las expresiones
E, X e Y. Dar todas las respuestas posibles.
(p ∨ q) ∧ p = p
a)
? = p ⇒ (q ∨ r)
(p ∨ q ≡ q) = (p ⇒ q)
b)
((p ∨ q ≡ q) ∧ s) ∨ (p ∨ q ≡ q) = ?
(q ⇒ p) = (p ∧ q ≡ q)
c)
(r ⇒ (q ⇒ p) ≡ p ∧ q ⇒ p) = ?
p = ¬p
d)
p⇒p = ?
(p . q) = (¬p ≡ q)
e)
((p . q) ⇐ (r ≡ (p . q))) = ?
2.6 Escribir las tablas de verdad para las siguientes expresiones, determinando los casos en
los cuales son tautologías, contradicciones o contingencias.
§Versión 2015.1
2.5. Ejercicios 51
a) (p ∨ q) ∨ ¬q e) (p . q) . p
b) (p ∧ q) ⇐ ¬q f) (p ⇒ q) ⇒ p
c) (p . q) ∧ (p ∨ q) g) ¬q ∧ ¬p ≡ (q ⇒ p) ⇒ q
d) p ≡ (q ≡ p) h) (p ≡ p ∨ ¬p) ⇒ p
2.9 Identificar las proposiciones elementales en las siguientes frases y traducirlas en expresio-
nes booleanas.
a) x < y o x = y.
b) x < y o x = y o x > y.
c) Si x > y e y > z entonces v = w.
d) Las siguientes expresiones son todas verdaderas: x < y, y < z y v = w.
e) A lo sumo una de las siguientes expresiones es verdadera: x < y, y < z y v = w.
f) Ninguna de las siguientes expresiones es verdadera: x < y, y < z y v = w.
g) Las siguientes expresiones no son todas verdaderas al mismo tiempo: x < y, y < z y
v = w.
h) Cuando x < y entonces y < z; cuando x ≥ y entonces v = w.
i) Cuando x < y entonces y < z significa que v = w, pero si x ≥ y entonces y > z no
ocurre; sin embargo si v = w entonces x < y.
§Versión 2015.1
52 2. Expresiones booleanas
j) Si la ejecución del programa P comenzó con x < y, entonces la ejecución termina con
y = 2x .
k) La ejecución del programa P que comenzó con x < 0 no terminará.
2.10 Decir en cada caso si la condición p es necesaria, suficiente o ambas para la condición q.
2.11 Formalice las siguientes oraciones, en cada caso detalle cuales son las variables proposi-
cionales que utiliza.
§Versión 2015.1
2.6. Tablas 53
2.6. Tablas
Niveles de precedencia
1 E[x := Y] sustitución textual
2 f.E aplicación de función
3 (−√ (¬ 2·)
·), signo, negación
4 (·), (·) raíces y potencias
5 ×, / producto y división
6 mı́n, máx mínimo y máximo
7 +, − suma y resta
8 =, ≤, <, ≥, > operadores relacionales
9 ∧, ∨ disyunción y conjunción
10 ⇒, ⇐ implicancia y consecuencia
11 ≡, . equivalencia y discrepancia
Nota: la negación de los operadores en los niveles 6 y 9 tienen el mismo nivel de precedencia que
cada uno de ellos respectivamente.
§Versión 2015.1
54 2. Expresiones booleanas
Asociatividades
E[x := Y] Asociativo a izquierda
f.E Asociativo a izquierda
(−√·), (¬ 2·) Asociativo a derecha
(·), (·) Asociativo a derecha
× Asociativo
/ Asociativo a izquierda
mı́n, máx Asociativos
+ Asociativa
− Asociativa a izquierda
=, ≤, <, ≥, > No son asociativos, son conjuntivos
∧, ∨ Asociativos
⇒ Asociativa a derecha
⇐ Asociativo a izquierda
≡, . Asociativos
§Versión 2015.1