Capı́tulo 6: Expresiones cuantificadas y lenguaje de predicados
Sección 6.1: Introducción
Las expresiones cuantificadas o cuantificaciones, nos permiten expresar una secuencia de
expresiones, las cuales dependen de una variable, unidas mediante una operación. Antes
de presentar la definición formal de expresión cuantificada que utilizaremos en el capı́tulo,
veremos algunos ejemplos de estas expresiones.
Una cuantificación, muy utilizada en las matemáticas, es la sumatoria. El siguiente es
un ejemplo de una expresión que denota la suma de los primeros n números impares,
mediante una sumatoria:
n−1
X
2×i+1
i=0
En esta expresión pueden distiguirse varias componentes. Por un lado el operador suma-
toria, el cual se corresponde con el operador binario +, por otro lado la variable i junto
con un rango de variación (i puede tomar los valores entre 0 y n − 1), y por último una
expresión (2 × n + 1) que indica cuales van a ser los términos de la sumatoria.
Utilizando la notación para cuantificaciones que veremos más adelante, la expresión an-
terior se expresarı́a como:
(+ i | 0 ≤ i < n : 2 × i + 1)
Esta notación tiene varias ventajas respecto a la notación anterior (sumatoria). Algunas
de ellas son:
Los paréntesis hacen explı́cito el alcance de la variable i, es decir el ámbito en donde
i está referenciada. Este alcance comprende la expresión entre paréntesis.
Las expresiones cuantificadas presentadas con esta notación admiten cualquier ex-
presión booleana como rango de variación de i, mientras que la anterior solo admite
intervalos de números naturales. Esto facilita la escritura de las cuantificaciones.
Por ejemplo, podrı́amos escribir la cuantificación 6.1 como:
(+i | 1 ≤ i ≤ n ∧ impar.i : i)
La nueva notación permite con mayor facilidad la participación de más de una
variable cuantificada. Por ejemplo,
97
Cartilla Herramientas de Lógica Computacional Tipos
+i, j | 1 ≤ i ≤ 2 ∧ 3 ≤ j ≤ 4 : ij
denota la suma 13 + 14 + 23 + 24 (para determinar qué combinaciones de ij deben
sumarse, elegimos todas la combinaciones de i y j que satisfagan 1 ≤ i ≤ 2 ∧ 3 ≤
j ≤ 4).
Otros ejemplos de expresiones cuantificadas son las cuantificaciones universal y existen-
cial, vistas en el capı́tulo anterior. Éstas son llamadas cuantificaciones lógicas. También
existen cuantificaciones para definir conjuntos por comprensión y para otros operadores
matemáticos, como ser el producto.
Antes de definir la sintaxis de expresiones cuantificadas generales se introducirá con mayor
detalle el concepto de tipo de las expresiones, el cual es de gran de importancia para
comprender las cuantificaciones.
Sección 6.2: Tipos
En los lenguajes de programación, se define tipo como el conjunto no vacı́o de valores
que pueden asociarse a una variable. Recordemos que este concepto fue introducido en el
Capı́tulo 1 cuando definimos variable. Luego, en el Capı́tulo 2, trabajamos con expresiones
booleanas y observamos que éstas sólo asumen los valores True y False, de ahora en más
notaremos con B, al conjunto de éstos valores. Comenzaremos ahora a trabajar con otros
tipos que describimos en la siguiente tabla:
Nombre Sı́mbolo Tipo (conjunto de valores)
enteros Z enteros:. . . , −3, −2, −1, 0, 1, 2, 3, . . .
naturales N números naturales: 0, 1, 2, . . .
positivos Z+ enteros positivos: 1, 2, 3, . . .
negativos Z− enteros negativos: −1, −2, −3, . . .
racionales Q números racionales: i/j con i, j enteros y j 6= 0
reales R números reales
reales positivos R+ números reales positivos
booleanos B True y False
Además de las constantes y variables, otras clases de expresiones que debemos tomar en
cuenta en la definición de tipos es la aplicación de funciones. Cada función tiene asociado
un tipo, el cual a su vez describe los tipos de sus parámetros y el tipo de su resultado. Si
los parámetros p1 , p2 , . . . , pn de una función f tienen los tipos t1 , t2 , . . . , tn y el resultado
de la función tiene tipo r, entonces f tiene tipo t1 × . . . × tn → r. Indicamos esto último
98
Cartilla Herramientas de Lógica Computacional Predicados
ası́:
f : t1 × . . . × tn → r (6.1)
En la siguiente tabla presentamos algunos ejemplos de funciones y sus tipos.
función tipo ejemplo de aplicación de función
mas Z × Z → Z mas (1, 3) o 1 + 3
no B→B no.True o ¬True
menor Z × Z → B menor (5, 3) o 5 < 3
Sección 6.3: Predicados
Un predicado es una aplicación de una función booleana cuyos argumentos pueden ser
de diferentes tipos, es decir un predicado puede ser una función de tipo Z → B como la
función par.i o Z × Z → B como la función igual(x, x − z + z) o menor(x, y + z). Los
nombres de las funciones (igual, menor) son llamados sı́mbolos de predicados. También
utilizamos la notación x < y para expresar el predicado menor(x, y). Por ejemplo, la
siguiente expresión x < y ∧ x = z ⇒ q(x, z + x) contiene tres predicados, x < y, x = z
y q(x, x + z). Vemos que los argumentos de los predicados son en este caso, variables de
tipo distinto de B o también expresiones de éstos tipos. Los argumentos de un predicado
son llamados términos, por ejemplo en la fórmula anterior los términos en los predicados
son x, y, z y z + x.
Diremos que una fórmula del cálculo de predicados es una expresión booleana en la cual
alguna de las variables booleanas ha sido reemplazada por:
Predicados.
Cuantificaciones existenciales o universales.
El cálculo de predicados incluye los axiomas del cálculo proposicional y los axiomas co-
rrespondientes a las expresiones cuantificadas (∧ | R : P ) (cuantificador universal) y
(∨ | R : P ) (cuantificador existencial) que vimos en el capı́tulo 3.
Sección 6.4: Sintaxis e interpretación de la cuantificación
Una expresión cuantificada o cuantificación, denota la aplicación del operador ⊕ a los
valores de T evaluada en los estados en que la variable x satisface el rango R, es decir los
estados para los cuales R es True. En ese caso, usaremos la notación:
99
Cartilla Herramientas de Lógica Computacional Sintaxis e interpretación de la cuantificación
(⊕ x | R : T )
para referirnos a lo anterior.
Aquı́ es necesario hacer los siguientes supuestos:
⊕ designa un operador asociativo, conmutativo y con elemento neutro.
x denota una variable, o una secuencia de variables, llamadas variables cuantificadas.
Cuando exista más de una variable cuantificada, se separarán las variables entre
comas.
R es un predicado que se denomina rango de especificación.
T es una expresión llamada término de cuantificación.
La variable cuantificada x solo tiene sentido dentro de los sı́mbolos ( y ). Cuando necesi-
temos hacer referencia explı́cita a la variable cuantificada escribiremos R(x) y T (x) para
el rango y el término respectivamente.
Aquı́ vemos algunos ejemplos de cuantificaciones junto con las expresiones que éstas de-
notan.
(+ i | 0 ≤ i < 4 : i,8) = 0,8 + 1,8 + 2,8 + 3,8
(× i | 0 ≤ i < 3 : i + (i + 1)) = (0 + 1) × (1 + 2) × (2 + 3)
(∧ i | 0 ≤ i < 2 : b[i] 6= 6) 6 6 ∧ b[1] 6= 6
= b[0] =
(∨ i | 0 ≤ i < 21 : b[i] = 0) = b[0] = 0 ∨ . . . ∨ b[20] = 0
La cuantificación que tiene como operador ∧ es la cuantificación universal, mientras que la
existencial también se denota con la cuantificación que tiene como operador ∨. También
se utilizan sı́mbolos en lugar de un operador en algunas cuantificaciones matemáticas,
como la sumatoria y la productoria. P EnQlo que sigue utilizaremos indistintamente en las
cuantificaciones los sı́mbolos ∀, ∃, y y los correspondientes operadores ∧, ∨, + y ×.
En resumen, aceptaremos:
P
(+ i | R : P ) como (Q i | R : P )
(× i | R : P ) como ( i | R : P )
(∧ i | R : P ) como (∀ i | R : P )
(∨ i | R : P ) como (∃ i | R : P )
100
Cartilla Herramientas de Lógica Computacional Los primeros ejemplos de traducción
Sección 6.5: Los primeros ejemplos de traducción
Una habilidad fundamental para practicar es aquella de expresar afirmaciones en términos
de cuantificadores. Sólo queremos cuantificar en este punto; no queremos saber el valor
de la expresión.
Formalizar el lenguaje corriente mediante el cálculo de predicados puede ser útil al menos
en dos sentidos. Por un lado, pone de manifiesto ambigüedades en el lenguaje lo cual
fuerza a la precisión. Por ejemplo, la frase “entre 80 y n”, no expresa si 80 y n están o
no incluı́dos. Una formulación en cálculo de predicados contempla estas situaciones; en
el capı́tulo anterior vimos ejemplos de expresiones con puntos suspensivos que generaban
ambiguedad. Por otra parte, una vez obtenida la formalización conveniente, el uso de las
reglas de inferencia permite razonar adecuadamente sobre las cuestiones en consideración.
En los siguientes ejemplos, se definen predicados adicionales como mult(x, 2), cant(x), etc
para simplificar la expresión. Se deja al lector la labor de entender exactamente qué sig-
nifican estos predicados leyendo los siguientes ejemplos.
Sin embargo, estas cuantificaciones no serán lo más “finas” posible, como se verá en la
siguiente sección. La razon es que los predicados anteriores a su vez se pueden expresar
en notación de cuantificadores. Veamos:
“Todo número entero par es múltiplo de 2”, se traduce en:
(∀ x : Z | par(x) : mult(x, 2))
“Cada capı́tulo tiene al menos 3 páginas”, se escribe:
(∀ c | c ∈ Cap : cant(c) ≥ 3),
donde cant(x) indica la cantidad de páginas que tiene el capı́tulo x. No siempre las cuan-
tificaciones universales se descubren mediante frases explı́citas, a veces, están implı́citas.
“Los enteros pares son múltiplos de 2”, también se escribe:
(∀ x : Z | par(x) : mult(x, 2))
“Un entero par es múltiplo de 2”, se escribe:
(∀ x : Z | par(x) : mult(x, 2))
Esto es lo que ya observamos anteriormente acerca de las variables libres en un teorema,
siempre están cuantificadas universalmente. Por ejemplo, cuando escribimos x2 > 0, si
101
Cartilla Herramientas de Lógica Computacional Traducción de expresiones aritméticas
no existe ningún estado particular en discusión, el significado es que cada estado de x
satisface x2 > 0, con lo cual estamos afirmando que (∀ x | : x2 > 0).
Las cuantificaciones existenciales se detectan cuando aparece alguna de las siguientes
palabras: “existe, algún, hay, al menos un, para algún”.
Veamos algunos ejemplos:
“Algún entero par es divisible por 3”:
(∃ x : Z | par(x) : divisible(x, 3))
“Hay un capı́tulo con un número par de páginas”:
(∃ c | c ∈ Cap : par(cant.c))
Sección 6.6: Lectura de expresiones cuantificadas
Aquı́ vale la pena observar que al hacer la traducción, uno intenta eliminar de la escritura
coloquial las variables que aparecen cuantificadas.
1. (∀x : hombre| x es casado : x es infiel).
Respuesta: Todo hombre casado es infiel.
2. (∀x : hombre| (x es bueno) : (∃y : mujer| True : (y está junto a x)∧(y quiere a x))
Respuesta: Todo hombre bueno está junto a una mujer que lo quiere.
3. (+k : N| (−1 ≤ k ≤ 100) : (·j| 0 ≤ j ≤ k + 1 : j))
100 k+1
!
X X
Respuesta: j . Ojo!, al escribir simplemente en notación estándar de
k=0 j=0
sumatoria, la suma va desde k = 0 pues k es un número natural!!
Sección 6.7: Traducción de expresiones aritméticas
Con nuestra notación podemos simplificar y escribir de manera concisa y precisa algunas
operaciones entre más de dos elementos. Nótese que en el uso de puntos suspensivos para
escribir ciertas operaciones puede generarse una ambiguedad que se resuelve gracias al
uso de cuantificadores. Ejemplos adicionales se desarrollarán en el capı́tulo siguiente:
102
Cartilla Herramientas de Lógica Computacional Traducción de expresiones aritméticas
1. (1 6= 0) ∧ (2 6= 0) ∧ (3 6= 0) ∧ . . . ∧ (100 6= 0)
Respuesta: (∀x : N | 1 ≤ x ≤ 100 : x 6= 0)
100
P x
P
2. (x + y)
x=1 y=1
Respuesta: (Σx : N | 1 ≤ x ≤ 100 : (Σy : N| 1 ≤ y ≤ x : x + y))
3. 2 + 4 + 6 + . . . + 10000
Respuesta: Se puede escribir de dos formas: La primera es la que luce escogiendo
una variable que recorra cada uno de los números que se están sumando.
(Σx : N| (x es par) ∧ (2 ≤ x ≤ 10000) : x)
La segunda luce más parecida a lo que uno hace al programar, que es escoger un con-
tador que recorra las distintas posiciones (“el primer sumando, el segundo sumando,
etc”) y allı́ escojo el número que se está sumando en cada posición:
(+y : N| 1 ≤ y ≤ 5000 : 2y)
4. (12 ) × (12 + 22 ) × (12 + 22 + 32 ) × . . . × (12 + 22 + 32 + . . . + 10002 )
Respuesta: Este ejercicio es un poco más complicado, pero para los estudiantes
con experiencia programando puede ser sencillo. La analogı́a entre la programación
y la cuantificación se puede explicar en este ejemplo como sigue: ¿Cuántas variables
necesitamos para un algoritmo que calcule esta suma? Si nos damos cuenta, ne-
cesitamos dos contadores: Uno que recorra (enumere) cada uno de los paréntesis
que se están multiplicando y uno que recorra dentro de cada paréntesis para ver los
números que se están sumando.
Si se intentara calcular esta suma mediante un ciclo anidado, el ciclo de afuera se
lograrı́a creando una variable i que recorra desde el paréntesis 1 hasta el paréntesis
1000. Ahora, para un valor cualquiera de i, el segundo ciclo sumarı́a los números
dentro del paréntesis i. ¿Qué números se suman dentro de ese paréntesis? Definimos
una variable j como contador que recorre los valores desde 1 hasta i y en cada paso
sumamos justamente j 2 . 1
Ası́ que la respuesta que nos queda es la siguiente:
Y
( i : N | 1 ≤ i ≤ 1000 : (Σj : N | 1 ≤ j ≤ i : j 2 ))
1
Cuidado: Nótese que en el segundo paréntesis se suman los números de 1 hasta 2, en el tercer
paréntesis se suman los números de 1 hasta 3 ... es decir, el rango de j depende de i). Esa es la dificultad
que a veces pueden tener este tipo de ejercicios.
103
Cartilla Herramientas de Lógica Computacional Traducción de textos en lenguaje natural
5. 11 + 32 + 63 + 104 + . . . + 21020
Respuesta: Observamos que basta descubrir por separado el patrón que llevan
las bases y los exponentes. Las bases son sumas de números consecutivos partiendo
desde 1 (1 = 1, 3 = 1 + 2, 6 = 1 + 2 + 3, . . .). Como antes, requerimos dos contadores
para expresar esto de manera adecuada y llegar ası́ a la siguiente solución:
X X i
i : N| 1 ≤ i ≤ 20 : j : N| 1 ≤ j ≤ i : j
Aquellos que conozcan la siguiente identidad:
X i(i + 1)
j : N| 1 ≤ j ≤ i : j =
2
pueden simplificar la anterior expresión simplemente como sigue:
i !
X i(i + 1)
i : N| 1 ≤ i ≤ 20 :
2
Sección 6.8: Traducción de textos en lenguaje natural
Aquı́ la idea es crear de manera correcta variables y definir adecuadamente los predica-
dos correspondientes. Advertencia: Recuerde que uno cuantifica sobre individuos (al
menos es lo que haremos nosotros en esta parte del curso).
No se dan ejercicios adicionales aquı́ para resolver, pues estos pueden ser fácilmente inven-
tados y se pueden encontrar en muchos libros, o simplemente en las tareas que dejen sus
profesores. Recuerde que muchas frases de la vida cotideana implı́citamente representan
expresiones cuantificadas.
Precaución: Es importante que el estudiante tenga cuidado en la manera como define
sus predicados; esta es una de las causas principales de equivocación en este tema.
1. La selección Colombia no gana de visitante en la eliminatoria sudamericana al mun-
dial 2010.
Respuesta: Esta frase parece no tener relación con el tema de expresiones cuan-
tificadas; sin embargo ... ¿Qué significa que la selección no gana de visitante?. Ob-
servamos que el significado preciso de la frase es: Ninguno de los otros equipos
de la eliminatoria pierde con Colombia en el partido que tienen de local.
La existencia de la palabra “Ninguno”, ya sugiere una cuantificación universal (∀)
y ası́ podremos resolver el problema. Necesitamos una variable x para denotar a un
equipo de la eliminatoria; esto resulta en la siguiente simbolización:
104
Cartilla Herramientas de Lógica Computacional Traducción de textos en lenguaje natural
• P (x) = x es un equipo en la eliminatoria al mundial 2010
• Q(x) = x no pierde con Colombia de local
A partir de los anteriores predicados, la solución es la siguiente:
(∀x | P (x) ∧ x 6= Colombia : Q(x))
2. Existe un banco que quiere a la gente.
Respuesta: Usaremos los siguientes predicados:
• P (x) = x es un banco
• Q(y) = y es una persona
• R(x, y) = x quiere a y
A partir de los anteriores predicados, la solución es la siguiente:
(∃x | P (x) : (∀y | Q(y) : R(x, y)))
Es importante aclarar que aquı́ no se puede cometer el error de haber definido un
predicado que dijera: “x quiere a la gente”, ya que “la gente” no es un individuo ...
sino que esa frase representa que x quiera a cada una de las personas; es decir, se
requiere una cuantificación adicional para esta frase. Por eso la solución dió con una
expresión cuantificada dentro de otra y necesitamos dos variables: Una para recorrer
los posibles bancos y otra para recorrer las posibles personas a quienes quiere un
banco dado.
3. Si la suma de dos números primos es par, ninguno de ellos es igual a 2.
Respuesta: Hay dos individuos (los números en cuestión); los denotamos por x
y y. Sean:
P (x) = “x es un número primo” , R(x, y) = “x + y es un número par”
Entonces la frase cuantificada serı́a la siguiente:
(∀x, y| P (x) ∧ P (y) ∧ R(x, y) : x 6= 2 ∧ y 6= 2)
Desde luego, un ejercicio anterior de esta guı́a es definir el predicado que un número
sea primo usando cuantificadores, ya que ese predicado no es atómico. De nuevo, se
deja esa labor al lector.
4. Todos los profesores fueron felicitados por al menos uno de sus alumnos en el dı́a
del profesor.
Respuesta: Usaremos los siguientes predicados:
• M (y) = y es un estudiante
• P (x) = x es un profesor
105
Cartilla Herramientas de Lógica Computacional Teoremas matemáticos en lenguaje de predicados
• Q(x, y) = y es un alumno de x
• R(x, y) = y felicita a x en el dı́a del profesor
A partir de los anteriores predicados, la solución es la siguiente:
(∀x| P (x) : (∃y| M (y) ∧ Q(x, y) : R(x, y)))
5. Todos los estudiantes que necesitan ayuda, pueden consultar a su profesor en algún
momento.
Respuesta: Es importante aclarar que aquı́ necesitamos una variable para indicar
un instante de tiempo; esta es una novedad respecto de los ejercicios anteriores y
este ejercicio no es tan sencillo. Se recomienda que esta solución se lea despacio,
pues aporta varias ideas importantes. Usaremos los siguientes predicados:
• M (y) = y es un estudiante
• P (x) = x es un profesor
• Q(x, y) = y es un alumno de x
• S(y) = y necesita ayuda
• T (t) = t es un instante de tiempo
• U (x, y, t) = y puede consultar a x en el momento t
A partir de los anteriores predicados, la solución es la siguiente:
(∀y| M (y) ∧ S(y) : (∃t, x| T (t) ∧ P (x) ∧ Q(x, y) : U (x, y, t)))
Sección 6.9: Teoremas matemáticos en lenguaje de predicados
Muchos teoremas matemáticos involucran cuantificaciones; este aspecto es en ocasiones
ocultado por la manera en que dichos teoremas son redactados, ası́ que hay que reformu-
larlos, de manera que la cuantificación resulte evidente.
√
1. Si x es un número natural arbitrario, entonces x2 + 2x + 1 es un número natural.
Respuesta: Esta frase involucra cuantificaciones; para ello, basta observar que
el teorema está diciendo en realidad,
√ que si x tomará el papel de cualquier número
2
natural, al evaluar la expresión x + 2x + 1, obtendremos un número natural. Eso
sucederá si evaluamos en x = 0 Y también sucederá si evaluamos en x = 1 Y
también sucederá si evaluamos en x = 2, etc. Ası́ que la operación involucrada es
un ∧ (que dijimos que escribı́amos en la expresión cuantificada con el sı́mbolo ∀).
La respuesta nos queda ası́:
√
(∀x : N | : x2 + 2x + 1 ∈ N)
106
Cartilla Herramientas de Lógica Computacional Teoremas matemáticos en lenguaje de predicados
Nótese que quedó un espacio vacı́o donde iba a ir el rango. El significado de esto es
que el rango denota un “filtro” de condiciones que debe cumplir la variable cuantifi-
cada x. Dado que ya dijimos que x era de tipo natural y no restringimos más sobre
x, entonces no hay nada adicional que agregar al rango.
2. Si n es un número natural, n(n + 1) es un número par.
Respuesta: Al igual que en cálculo proposicional, donde uno definı́a proposiciones
para simbolizar argumentos, aquı́ uno puede definir predicados para simbolizar los
argumentos (un predicado es una afirmación que se convierte en proposición al
reemplazar ciertas valores de variable por valores constantes). Aquı́ podemos definir
el predicado:
• p(n) = n(n + 1) es un número par.
Haciendo esto, el teorema nos queda como sigue: (∀n : N | : p(n))
Sin embargo la anterior respuesta no es del todo correcta. Con esto se quiere
decir que al igual que existen proposiciones atómicas y no atómicas, en el caso de
predicados, el predicado p(n) definido no es propiamente “atómico”, pues la frase
que un número es par involucra implı́citamente una cuantificación. ¿Qué significa
que un número sea par? Que existe algún número natural tal que al multiplicarlo
por 2 me de el número en cuestión. Es decir que la frase “n(n + 1) es un número
par” se traduce a notación de cuantificadores como: (∃k : N | : n(n + 1) = 2k).
Por tanto, la simbolización correcta de nuestro teorema es:
(∀n : N | : (∃k : N | : n(n + 1) = 2k))2
3. El producto de cualesquiera dos números impares es impar.
Respuesta: Aquı́ estamos queriendo decir que para cualesquiera dos números
impares que se escojan, el resultado de multiplicarlos es un número impar. Ası́ que
si queremos simbolizar esto debemos recurrir a definir dos variables: Una para ca-
da uno de los números impares que se están sumando (llamemos a estos números
m, n). Podrı́amos definir una variable extra para el producto de los dos números en
cuestión, pero no es necesario.
El predicado involucrado es
• p(x) = x es un número impar.
Ası́ que nuestra frase quedarı́a: Si m, n son números naturales tales que se cumple
p(m) (es decir, m es impar) y tales que p(n) (es decir, n es un número impar),
entonces se cumple que p(mn) (es decir, mn es un número impar).
2
En algunos casos se aceptarı́a la versión más relajada con p(n) como está definido antes, para evitar
una expresión más engorrosa, pero es bueno caer en cuenta de la presencia de expresiones susceptibles de
ser cuantificadas aún en casos sencillos.
107
Cartilla Herramientas de Lógica Computacional Ejercicios
Ası́ que en principio, la cuantificación serı́a la siguiente:
(∀m, n : N |p(m) ∧ p(n) : p(mn))
Sin embargo, al igual que en el ejemplo anterior, decir que un número es impar
involucra una cuantificación. Nótese que
p(x) ≡ (∃k : N | : x = 2k + 1)
Asi que para lograr que nuestra respuesta sea correcta, reemplazarı́amos p(m), p(n)
y p(mn) por lo que se obtiene al reemplazar x por cada uno de los valores m, n, mn
en la expresión cuantificada anterior (se deja al lector hacer el reemplazo y dar con
la respuesta final).
4. Todo número impar mayor que 5 se puede expresar como la suma de tres números
primos. 3
Respuesta: Aquı́ necesitamos definir una variable n que hará el papel del número
impar que es mayor que 5. Además, necesitamos definir variables a, b, c que harán
el papel de los tres números primos que sumados dan n.
Haciendo el proceso “despacio”, reescribimos el teorema de la forma siguiente: “Para
cualquier número natural n que sea impar y mayor que 5, se cumple que existen tres
números primos a, b, c tales que a + b + c = n”.
Ası́ que esta frase involucra los siguientes predicados:
• p(x) = x es un número impar.
• q(x) = x es un número primo.
La cuantificación en principio serı́a la siguiente:
(∀n : N | p(n) ∧ n > 5 : (∃a, b, c : N | q(a) ∧ q(b) ∧ q(c) : n = a + b + c))
Ahora, nos damos cuenta que los predicados p(x), q(x) definidos antes no son atómi-
cos, ası́ que hay que expresarlos usando cuantificadores. El primero ya lo tenı́amos
del ejemplo anterior; el segundo es un ejercicio sencillo que dejamos al lector
(expresar que un número x es primo usando cuantificadores).
Sección 6.10: Ejercicios
1. Verificar si es posible dar una expresión cuantificada sobre los siguientes operadores:
≡, ⇒, ¬ y /. En cada caso, ya sea afirmativo o negativo, justificar su respuesta.
3
Este es un teorema famoso de Teorı́a de Números llamado “Teorema de Vinogradov”
108
Cartilla Herramientas de Lógica Computacional Ejercicios
2. Dar la expresión cuantificada asociada a las siguientes expresiones:
a) 0, 31 + 0, 32 + . . . + 0, 3100
b) 1 × 2 × 3 × . . . × 25
c) b[0] × b[1] × . . . × b[n]
d) b[0] > 0 ∧ b[1] > 0 ∧ . . . ∧ b[n] > 0
e) b[0] > 1 ∧ b[1] > 3 ∧ . . . ∧ b[n] > 2 × n + 1
f) ((p + 0) = 0) ∨ ((p + 1) = 1) ∨ ((p + 2) = 2) ∨ . . . ∨ ((p + k) = k)
g) (3 × b[0])1 + (4 × b[0])1/2 + (5 × b[0])1/3 + . . . + (27 × b[0])1/25
3. Traduzca a notación de cuantificadores las siguientes operaciones (en algunos casos,
descubrir el patrón puede no ser tan sencillo y el proceso debe hacerse con calma,
sin esperar que la respuesta salga inmediatamente):
(a) n! (es claro que un factorial es el resultado de una productoria de varios números
y por tanto se puede cuantificar).
(b) El producto de los números impares desde 1 hasta n.
(c) (1 × 2 × 3) + (2 × 3 × 4) + (3 × 4 × 5) . . . (98 × 99 × 100).
(d) 4 × 3 + 8 × 7 × 6 + 12 × 11 × 10 × 9 + . . . + 2008 × 2007 × . . . × 1506
(e) (12 ) + (13 + 33 ) + (14 + 34 + 54 ) + (15 + 35 + 55 + 75 ) + . . . + (151 + 351 + . . . + 9951 )
4. En lo que sigue b [ 0 , . . . , n − 1] es una lista de n ≥ 0 números enteros. Traducir las
siguientes frases en expresiones cuantificadas.
a) El mı́nimo valor de la lista b es positivo.
b) El máximo valor de la lista b no es cero.
c) Si b [0] 6= 0 entonces b [0] es el máximo valor de la lista.
d) La lista b contiene tantos números positivos como negativos.
e) La lista b contiene exactamente dos ceros.
f ) El número de valores pares en la lista b es mayor que el número de valores
impares.
g) El promedio de los valores de b no supera al número de elementos no nulos en
la lista.
5. En lo que sigue b [ 0 , . . . , n − 1] es una lista de n ≥ 0 números enteros. Traducir las
siguientes expresiones cuantificadas en expresiones dadas en lenguaje corriente.
a) (max i | 1 ≤ i ≤ n : i + 1) = n + 1
b) (N i | 0 ≤ i ≤ 3 : i2 > i) = 2
109
Cartilla Herramientas de Lógica Computacional Ejercicios
c) (min i | 0 ≤ i ≤ 3 : i2 > i) = 2
d) (max i | 0 ≤ i < n − 1 : b [i]) = b [n − 1]
e) (N i | 0 ≤ i ≤ n − 1 : par. b [i] = (N i : 0 ≤ i ≤ n − 1 : impar. b [i])
6. Traducir las siguientes frases al lenguaje de predicados:
a) El número 1 es el único número natural que es menor que el entero positivo p y
que divide a q.
b) Algún entero es mayor que 23.
c) La suma de dos números impares es par.
d) Un número entero positivo no es negativo.
e) Cada número entero positivo es menor que el valor absoluto de algún entero
negativo.
f ) Los cubos de enteros nunca son pares.
g) El número real i es la mayor solución real de la ecuación f.i = i + 1.
h) Para ningún entero i, f.i es a la vez mayor y menor que i.
i) Ningún entero es mayor que todos los demás enteros.
7. Traducir las siguientes fórmulas del lenguaje de predicados a lenguaje corriente.
a) (∃ k : R | : (∀ i : Z :: f.i = k))
b) (∃ z : R | : (∀ i : Z :: f.j = f (j + i · z)))
c) (∀ x | x 6= m : f.x > f.m)
d) (∃ x, y : R | : f (x) < 0 ∧ 0 < f (y) ⇒ (∃ z : R | : f (z) = 0))
e) (∀ x : Z | : (∃ z : R :: f (x) = z))
f ) (∀ z : R : (∃ z : Z | : f (x) = z))
8. Formalizar las siguientes frases:
a) Cada uno ama a alguien.
b) Alguien ama a alguien.
c) Cada uno ama a cada uno.
d) Nadie ama a todos.
e) Alguien ama a nadie.
9. Formalizar las siguientes frases:
a) Puedes engañar a alguien por algún tiempo.
b) Puedes engañar a todos por algún tiempo.
110
Cartilla Herramientas de Lógica Computacional Ejercicios
c) No puedes engañar a todos todo el tiempo.
d) No puedes engañar a alguien todo el tiempo.
10. Traduzca el siguiente teorema matemático a notación de cuantificadores: Todo
número natural mayor que 11 se puede expresar como la suma de un múltiplo de 4
más un múltiplo de 5.
11. Traduzca a lenguaje de predicados y cuantificadores la siguiente frase: “Siempre que
usted lleve su dinero a Davivienda, su dinero nunca estará en el lugar equivocado”
Sugerencia: Tenga cuidado: Debe tener en cuenta una variable que denote un
instante de tiempo para poder modelar esta afirmación.
12. Traduzca a lenguaje de predicados y cuantificadores la siguiente frase: “Toda persona
que no maneje métodos de demostración a los 25 años, vivirá deprimido el resto de
su vida, a menos que apruebe un curso de Herramientas de Lógica antes de cumplir
los 30 años”
Sugerencia: Tenga cuidado: Debe tener en cuenta una variable que denote un
instante de tiempo para poder modelar esta afirmación y necesita crear un predicado
para distinguir si la persona dada está con vida o no.
13. En la cultura Inca se realizaban sacrificios para adorar a sus Dioses, ellos creian
como verdad las siguientes premisas:
a) Las mujeres virgenes se sacrifican para asegurar un mes de época de lluvias y
de esa manera regar los cultivos y obtener los alimentos.
b) Algunos hombres caciques son sacrificados para pedir perdón por los errores
de la comunidad y asi traerles felicidad.
c) Ninguna esposa de cacique podia ser sacrificada porque si lo hacian recibián el
castigo divino.
d ) Todos los sacrificios se hace por el bien de la comunidad.
Exprese con cuantificadores y predicados las premisas anteriores 4 .
4
Comentario: Hay un ejercicio del capı́tulo siguiente basado en estas premisas
111
Cartilla Herramientas de Lógica Computacional Ejercicios
112