Lógica Computacional
Nota 06. Lógica de predicados11El material aquí presentado se basa el libro de Huth y Ryan, Logic in Computer Science; en las notas del prof. Francisco Hernández Q.; y en las notas del prof. Favio Miranda.
1 La necesidad de un lenguaje más expresivo
Aunque la lógica proposicional puede lidiar satisfactoriamente con componentes de las oraciones como ‘no’, ‘y’, ‘o’ y ‘si … entonces’ los aspectos lógicos de los lenguajes naturales y artificiales van mucho más allá que ellos. Hay limitaciones de la lógica proposicional con respecto a modificadores del lenguaje como ‘existe…’, ‘todos…’, ‘cada…’, y ‘solo…’. El deseo de expresar oraciones declarativas más detalladas conduce al diseño de la lógica de predicados.
Considere la oración declarativa
Todo estudiante es más joven que algún instructor.
En la lógica proposicional, identificamos esta afirmación con la variable proposicional . Esto falla en reflejar la estructura lógica más fina de la oración anterior. Se trata de ser un estudiante, ser un instructor, y de ser más joven que alguien más. Estas son propiedades de algún tipo, nos gustaría tener un mecanismo para expresarlas junto con sus relaciones lógicas y dependencias.
Usamos predicados para tal fin. Por ejemplo, denota que Antonio es un estudiante, mientras que dice que Pablo es un instructor. Así, indica que Antonio es más joven que Pablo. Los símbolos , e son llamados predicados.
Estos predicados no son suficientes. No queremos escribir todas las instancias de donde es reemplazado por cada uno de los nombres de los estudiantes. Por lo tanto, ocupamos el concepto de variable, como , las cuales pueden ser consideradas como parámetros o posiciones para valores concretos. De este modo tenemos
: | es un estudiante |
---|---|
: | es un instructor |
: | es más joven que . |
Las variables son simplemente posiciones para objetos concretos. La disponibilidad de variables no es suficiente para capturar la esencia de la oración con la que iniciamos. Necesitamos transmitir el significado de ‘Todo estudiante es más joven que algún instructor ’, para ello introducimos los cuantificadores (para todo) y (existe), los cuales siempre vienen pegados a una variable, como en (para toda ) o en (existe o hay ). La oración inicial podemos escribirla simbólicamente como
Diferentes predicados pueden tener diferente número de argumentos. Los predicados con cualquier número finito de argumentos son posibles en la lógica de predicados.
Otro ejemplo es la oración
No todas las aves vuelan.
Para ella escogemos los predicados:
: | es un ave |
---|---|
: | vuela. |
‘No todas las aves vuelan’ puede ser codificado como
También es correcta la codificación:
Explicaremos más adelante porque fórmulas como las dos anteriores son equivalentes semánticamente.
La lógica de predicados extiende a la lógica proposicional con símbolos de funciones. Considere la oración declarativa:
Cada niño es más joven que su mamá.
Usando lógica de predicados lo anterior se expresa como
donde significa que es un niño, que es la mamá de , y que es más joven que . Otra formulación es,
Para todo niño y toda mamá de ese niño, es más joven que . Hay que notar que la implicación anterior es trivialmente verdadera para toda aquella persona que no es mamá del niño en cuestión porque el antecedente es falso, incluso si nadie cumple con ser su mamá. Cuando se trata de toda mama de ese niño el antecedente es verdadero y el consecuente también lo debe ser. No es elegante decir ‘toda mamá de ’, ya que sabemos que cada individuo tiene sólo una mamá biológica. Esto se ejemplifica aun más en la siguiente oración:
Antonio y Pablo tienen la misma abuela materna.
lo cual se expresa como sigue, teniendo en cuenta que es por Antonio y por Pablo, y es el predicado binario recién definido,
Si y son las mamás de Antonio y Pablo, respectivamente, y y son las mamás de ellas, i.e. abuelas maternas de Antonio y Pablo, respectivamente, entonces y son la misma persona. Hemos usado un predicado especial en la lógica de predicados, igualdad (). Se escribe entre dos argumentos, en lugar de . Otra forma de expresar esta oración es,
Los símbolos de función nos brindan una forma de evitar esta pobre codificación, ya que nos permiten representar a la mamá de de un modo más directo. En lugar de escribir , escribimos . Usando la función , la dos oraciones anteriores se simplifican dando como resultado:
todo niño es más joven que su mamá. La representación de que Antonio y Pablo tienen la misma abuela materna queda
Los símbolos de función pueden ser utilizados sólo en situaciones en la cuales queremos denotar un único objeto. Así, no podemos tener un símbolo de función para ‘hermano’. Puede que no tenga sentido hablar del hermano de , ya que puede no tener o tener más de uno. ‘Hermano’ debe codificarse como un predicado binario.
Si Bárbara tiene varios hermanos, la afirmación ‘a Ana le gusta el hermano de Bárbara’ es ambigua. Puede suceder que a Ana le guste uno de los hermanos de Bárbara, lo cual se escribe como:
donde y significan ‘es hermano de’ y ‘le gusta’, y y significan Ana y Bárbara. Si a Ana le gustan todos los hermanos de Bárbara, lo escribimos como:
Funciones con cero argumentos se llaman constantes: y arriba son contantes para Ana y Bárbara, respectivamente. Si el dominio hace referencia a estudiantes y la calificación que reciben, se podría tener una función binaria que toma dos argumentos; se refiere a la calificación del estudiante en el curso .
2 Lógica de predicados como un lenguaje formal
Hay dos clases de elementos que forman parte de la lógica de predicados. La primera clase denota a los objetos de los que hablamos: individuos como y , como las variables y , o como los que resultan al aplicar funciones. Las expresiones en la lógica de predicados que denotan objetos se llaman términos. El universo o dominio de discurso es el conjunto de objetos que se consideran en el razonamiento.
La otra clase de elementos denota valores de verdad; expresiones en esta clase se llaman fórmulas: es una fórmula, con y términos. Dentro de las fórmulas tenemos a los predicados que representan a las propiedades o relaciones de los objetos del dominio de discurso. Así un mismo predicado, digamos , está representando un número potencialmente infinito de fórmulas a las que se les asigna un valor de verdad, uno por cada posible combinación de y .
Un vocabulario para predicados consiste de dos conjuntos: (i) un conjunto de símbolos de predicado y (ii) un conjunto de símbolos de función . Cada símbolo de predicado y cada símbolo de función vienen con una aridad escrita como superíndice. Las constantes se pueden considerar como funciones que no toman ningún argumento. Por lo tanto, las constantes son parte del conjunto junto con las funciones “reales” que sí toman argumentos. De ahora en adelante estipularemos a las constantes como funciones de aridad 0, que llamaremos nulas.
2.1 Términos
Los términos constan de variables, constantes y símbolos de función.
Definición 2.1
Los términos se definen como sigue.
-
Una variable es un término.
-
Si es una función nula, entonces es un término.
-
Si son términos y tiene aridad , entonces es un término.
-
Nada más es un término.
La gramática en BNF para la definición anterior es:
donde toma valores de un conjunto de variables var, de los símbolos de función nulos , y sobre aquellos elementos de con aridad .
2.2 Fórmulas
La elección de los conjuntos y para los símbolos de predicado y función, respectivamente, se toma de acuerdo a lo que uno desea describir.
Definimos el conjunto de fórmulas sobre inductivamente a través de la siguiente gramática en BNF:
donde es un símbolo de predicado con aridad , son términos sobre y es una variable.
Las fórmulas de la lógica de predicados pueden representarse por árboles de análisis sintáctico. Por ejemplo, el árbol de análisis sintáctico en la Figura 1 representa la fórmula .

Convención Por conveniencia, retenemos la precedencia acordada para la lógica proposicional y agregamos la referente a y como sigue:
-
, y tienen la precedencia más alta;
-
luego y ;
-
luego , que es asociativo a la derecha;
-
por último, .
Ejercicios 2.2
Considere los símbolos de constante y ; los de función y ; y los de predicado , y , donde el superíndice en los símbolos de función y de predicado indica el número de argumentos que reciben. Diga si las siguientes expresiones son fórmulas de la lógica de predicados:
-
,
-
,
-
,
-
,
-
,
-
,
-
,
-
,
-
,
-
,
-
,
-
,
2.3 Especificación formal
Algunas frases del español no se pueden especificar de una manera completamente fiel a la lógica de predicados. Se presentan a continuación una serie de recomendaciones a tomar en cuenta durante el proceso de especificación.
-
Se especifican o traducen oraciones declarativas o proposiciones.
-
‘y’ se traduce como , también ‘pero’.
-
La disyunción es incluyente.
-
Frases como para todos, para cualquier, todos, cualquiera, los, las, etc. se traducen usando el cuantificador universal .
-
Frases como para algún, existe un, alguno, alguna, uno, una, etc. se traducen usando el cuantificador existencia . Aunque hay excepciones, por ejemplo, si alguien se avienta del bungee se arriesga se puede interpretar como cualquiera que se avienta del bungee se arriesga, su especificación es .
-
Es común que una especificación compuesta que involucre cuantificadores pueda formarse como alguno de los cuatro juicios aristotélicos:
-
- Universal afirmativo.
Todo es se traduce como .
-
- Existencial afirmativo.
Algún es se traduce como .
-
- Universal negativo.
Ningún es se traduce como .
-
- Existencial negativo.
Algún no es se traduce como .
Considerando a los predicados y como conjuntos, los juicios aristotélicos anteriores pueden interpretarse del siguiente modo:
-
- Universal afirmativo.
Todo es puede entenderse como .
-
- Existencial afirmativo.
Algún es puede entenderse como .
-
- Universal negativo.
Ningún es puede entenderse como .
-
- Existencial negativo.
Algún no es puede entenderse como .
-
-
Las variables no se mencionan en español. debe escribirse en español como Cualquier superhéroe viste un traje y no como para cualquier , si es superhéroe, entonces viste un traje.
-
y son útiles y comunes. Menos comunes son , , y .
-
es muy raro que aparezca como una traducción del español. Bajo ese patrón la fórmula es un teorema para un universo no vacío de individuos, como se verá en la Nota 08. Este teorema tiene a menudo la siguiente interpretación: hay alguien que si bebe, entonces todos beben. Sin embargo, es difícil que se busque tener una situación así al momento de especificar una fórmula en la lógica de predicados.
-
El hecho que se usen dos o más variables distintas no implica que éstas representen a objetos distintos del universo. Para especificar dos objetos distintos no es suficiente con variables distintas. Las fórmulas y expresan lo mismo, algo cumple . Se debe agregar explícitamente que y tienen la propiedad de ser distintos, con el predicado .
-
En la fórmula la variable depende del valor de ; por ejemplo, en el cálculo diferencial e integral se define el límite de la función , cuando tiende a , como si y solo si , para , y , la definición se cumple tomando para cualquier .
Esta dependencia no está presente en la fórmula ; por ejemplo, en los números naturales se tiene que , con se satisface la fórmula.
Ejemplo 2.3
Considere las constantes , y para representar a la primera persona del singular, a Amélie y a Pablo, respectivamente. Así , y son términos. Escogemos como el conjunto de predicados con significado:
: | es padre de |
---|---|
: | es madre de |
: | es el cónyuge de |
: | es la hermana de |
---|---|
: | es el hermano de . |
Traduzca las siguientes oraciones a lógica de primer orden.
-
1.
Todo hijo de mi padre es mi hermano.
-
a)
Representamos a mi padre como una función, para esto representa a la función que regresa el padre del único argumento que recibe. Así tenemos,
-
b)
Representamos padre exclusivamente como un predicado. La codificación para la oración es
-
a)
-
2.
Todos tienen una madre.
-
3.
Cualquier persona que tenga una madre tiene un padre.
-
4.
Ninguna abuela es el padre de todo el mundo.
-
a)
Representando padre () y madre () como función.
-
b)
Representando padre y madre como predicado.
Lo que es equivalente a
-
a)
-
5.
Pablo es el cuñado de Amélie.
-
6.
Todos los tíos de Amélie y de Pablo son hermanos.
-
a)
Representando padre () y madre () como función.
-
b)
Representando padre y madre como predicado.
-
a)
-
7.
Todos los tíos en común de Amélie y de Pablo son padres.
-
a)
Representando padre() y madre() como función.
-
b)
Representando padre y madre como predicado.
-
a)
Las especificaciones formales requieren de conocimiento del dominio específico. Expertos en el tema no hacen explícito todo el conocimiento, así que un especificador puede ignorar importantes restricciones para un modelo. Por ejemplo, algunas especificaciones arriba expuestas pueden parecer correctas, pero ¿qué sucede si los argumentos del predicado son iguales? Si las relaciones familiares no son del domino común, entonces el especificador puede no darse cuenta que un hombre no puede ser su propio hermano. Así, algunas fórmulas de este ejemplo serían incorrectas.
Ejercicio
¿Cuál es la formalización más adecuada para la oración Todas la mujeres son rockeras, con la posible excepción de Adela, dado el siguiente diccionario? Diccionario: : Adela, : es mujer, y : es rockera.
-
1.
-
2.
-
3.
-
4.
-
5.
La opción más cercana a transmitir la idea presentada es la número 2. Esta declaración afirma que toda persona que es mujer, exceptuando Adela, es rockera, pero no tenemos información contundente respecto a que si Adela es rockera o no, así que posiblemente ella lo sea.
Es interesante notar que si buscamos la formalización para Todas la mujeres son rockeras, con la certera excepción de Adela, tendríamos lo siguiente
2.4 Inducción estructural para la lógica de predicados
Los principios de inducción para términos y fórmulas se enuncian a continuación.
Definición 2.4
(Principio de inducción estructural para términos) Sea una propiedad acerca de términos. Para demostrar que es válida para todos los términos, llevamos a cabo los siguientes pasos:
- Base de inducción:
-
Se demuestra que
-
Si es una variable, entonces se cumple para .
-
Si es una constante, entonces se cumple para .
-
- Paso inductivo:
-
Suponiendo que se cumple para los términos , hay que demostrar que si es un símbolo de función de aridad , entonces cumple .
Definición 2.5
(Principio de inducción estructural para fórmulas) Sea una propiedad acerca de fórmulas. Para demostrar que es válida para todas las fórmulas, llevamos a cabo los siguientes pasos:
- Base de inducción:
-
Demostrar que si es un símbolo de predicado con aridad y son términos sobre , entonces cumple con .
- Paso inductivo:
-
Suponiendo que se cumple para las fórmulas y , hay que demostrar que
-
cumple .
-
cumple , donde .
-
y cumplen .
-
2.5 Variables libres y ligadas
Definición 2.6
Sea una fórmula de la lógica de predicados. Una presencia de en es libre si es un nodo hoja del árbol de análisis sintáctico correspondiente a tal que no hay trayectoria ascendente de ese nodo a un nodo o . De otro modo, esa presencia de está ligada. El alcance de en es —a excepción de cualquier subfórmula de que esté cuantificando a por su cuenta propia. Análogamente se define el alcance de en .
Si figura en , está ligada si y sólo si está dentro del alcance de algún o .
Definición 2.7
Sea una fórmula. El conjunto de variables libres de se denota , donde .
El papel que desempeña una variable libre es la de un parámetro, que representa un elemento arbitrario o genérico del dominio. Este uso de las variables libres es evidente en las reglas de deducción natural que se estudian en la siguiente nota. Además, una fórmula con variables libres es verdadera si en lugar de tales variables se considera cualquier elemento del dominio, y la fórmula que resulta es verdadera. La semántica de la lógica de predicados se estudia a detalle en la Nota 8.
Definición 2.8
Se tienen los siguientes conceptos:
-
Un término cerrado es un término que no contiene ninguna variable.
-
Una fórmula atómica cerrada es una fórmula atómica cuyos términos son todos cerrados.
-
Una literal cerrada es una fórmula atómica cerrada o la negación de una.
-
Una fórmula es cerrada si no tiene variables libres. Una fórmula cerrada también se conoce como enunciado.
-
Una fórmula cerrada sin cuantificadores es una fórmula libre de cuantificadores, cuyas fórmulas atómicas son cerradas.
Ejercicios 2.9
Dibuje el árbol de análisis sintáctico para las siguientes fórmulas. Indique cuales son fórmulas cerradas y cuales son abiertas.
-
,
-
-
-
2.6 Sustitución
La noción de sustitución en la lógica de predicados es más complicada debido a la existencia de términos y de variables ligadas. Las sustituciones deben respetar el ligado de variables.
2.6.1 Sustitución en términos
La sustitución de la variable por el término en un término , denotada , se define recursivamente sobre la estructura de como sigue,
2.6.2 Sustitución en fórmulas
La sustitución en fórmulas necesita cuidados especiales debido a la presencia de variables ligadas mediante cuantificadores. Deben evitarse las siguientes situaciones:
-
Sustitución de variables ligadas. La sustitución en fórmulas no debe ser textual ya que las variables ligadas no pueden sustituirse. La solución consiste en definir la sustitución únicamente sobre variables libres.
-
Captura de variables libres. Considere la fórmula , la cual es cierta siempre y cuando sea cierta para cualquier valor de . Dado , nos gustaría llegar a la verdad de cualquier sustitución del estilo . Tomemos ahora , que indica que para cualquier individuo existe otro distinto a él, esto es cierto si el universo consta de al menos dos objetos. Sin embargo, al sustituir por sin mayor cuidado tenemos:
lo cual es absurdo. El problema es que la presencia libre de en se ligó al sustituirla por . Las posiciones que correspondan a una variable libre representan a objetos particulares y el permitir que se liguen al realizar una sustitución modificará el significado intensional de la fórmula.
Para solucionar este problema, la sustitución en una fórmula se define renombrando las variables ligadas, puesto que los nombres de las variables ligadas no importan; por ejemplo, y significan lo mismo, que todos los objetos cumplen el predicado .
Para realizar la sustitución , se renombraría la variable ligada , digamos , y ahora sí sustituiría a , lo que resulta en .
Definición 2.10
Decimos que dos fórmulas y son -equivalentes, lo cual se escribe si y sólo si y difieren únicamente en los nombres de sus variables ligadas.
Las fórmulas -equivalentes son lógicamente equivalentes, de modo que son intercambiables en cualquier contexto. El concepto de -equivalencia se emplea implícitamente en la siguiente definición de sustitución para fórmulas.
La sustitución de por el término en una fórmula , , de define recursivamente sobre la estructura de como,
Ejemplo 2.11
Lleve a cabo las sustituciones que aparecen a continuación:
Ejercicios 2.12
Realice las siguientes sustituciones.
3 Especificación funcional y relacional con tipos
En ciencias de la computación es importante conocer de donde provienen los objetos con los que trabajamos, por esa razón necesitamos tener predicados para tipos.
3.1 Predicados para tipos
Considere la siguiente oración declarativa Existe un entero que es más pequeño que cualquier natural cuya traducción puede pensarse como ; sin embargo, se pierde información por lo que se prefiere la traducción con tipos .
Introducimos abreviaturas para ahorrarnos algunos conectivos:
La traducción anterior se expresa como . Adoptamos la convención de que los tipos aparecen en otro tipo de letra.
- Ejemplo 3.1
-
Mostramos el uso de tipos al realizar la traducción de las siguientes oraciones declarativas respecto a libros y autores. Considere los siguientes predicados y constantes:
Las oraciones y sus traducciones aparecen a continuación:
-
Hay un libro más extenso que “El Quijote de la Mancha”.
-
“La construcción lógica del mundo” está escrito por un filósofo y no es más extenso que “Alicia en el país de las maravillas”.
-
Si “Alicia en el país de las maravillas” está escrito por un matemático, entonces está escrito por un filósofo.
-
No es el caso que cualquier libro es escrito por un filósofo.
-
Hay alguien que es filósofo y matemático y ha escrito un libro más extenso que “Alicia en el país de las maravillas”.
-
3.2 Especificación de listas
En lenguajes de programación dado un tipo de datos se define el tipo de datos de listas con elementos de , denotado , como sigue:
-
La lista vacía, , es un miembro de .
-
Si es un elemento de y es una lista de , entonces es un miembro de .
-
Son todos.
Para especificar el tipo de datos de listas con elementos de debemos considerar a como un símbolo de constante para la lista vacía; un símbolo de función (infijo) que construye una lista22En Prolog las listas son una estructura de datos incorporada en el lenguaje, donde y corresponden a los patrones [] y [h|t], respectivamente.; y los símbolos de predicado y que denotan el tipo y listas . La formalización es la siguiente:
-
,
-
.
- Ejemplo 3.2
-
Realice la especificación formal de las siguientes propiedades de las funciones concatenación y reversa de listas. En cada caso dar dos especificaciones, una funcional y otra relacional.
-
i.
La operación de concatenación es asociativa.
-
ii.
Si la concatenación de dos listas es vacía, entonces ambas listas son vacías.
-
iii.
Si la concatenación de dos listas es una lista unitaria, entonces una de tales listas es vacía y la otra es la misma lista unitaria.
-
iv.
La reversa de la reversa de una lista es la misma lista.
- Especificación funcional
-
Usaremos las constantes, funciones y predicados empleados en la definición del tipo de datos de listas con elementos de ; además de los símbolos de funciones y , para la concatenación y reversa de listas, respectivamente. Las especificaciones que buscamos son:
-
i.
.
-
ii.
.
-
iii.
.
-
iv.
.
-
i.
- Especificación relacional
-
Usaremos las constantes, funciones y predicados empleados en la definición del tipo de datos de listas con elementos de ; además de los siguientes predicados,
Las especificaciones que buscamos son:
-
i.
.
-
ii.
.
-
iii.
.
-
iv.
.
-
i.
-
i.
Ejercicio
Realizar la siguiente especificación formal de dos maneras, con un enfoque funcional y relacional.
-
1.
La lista vacía está ordenada.
-
2.
Si la lista tiene un único elemento, entonces está ordenada.
-
3.
Si una lista con al menos un elemento está ordenada y si es menor que la cabeza de , entonces la lista está ordenada.