Lógica Computacional
Nota 11. Algoritmos de unificación. Regla de resolución y precedimiento de resolución general11Esta nota se base en el libro de Ben-Ari M., Mathematical Logic for Computer Science
1 Introducción
La diferencia entre resolución en lógica de predicados y resolución en lógica proposicional es la unificación. En lógica proposicional, se aplicaba la regla de resolución a dos cláusulas si contenían literales complementarias, i.e., la literal positiva era idéntica a la literal negativa, omitiendo el símbolo de negación. La misma idea subyace en la resolución en lógica de predicados, excepto que el criterio para clasificar literales complementarias es más relajado. La literal positiva no tiene que ser idéntica a la literal negativa, omitiendo el símbolo de negación; es suficiente con que las dos literales puedan se idénticas al sustituir sus variables.
La unificación es el proceso por el que se determina si dos expresiones pueden ser unificadas, i.e., si pueden ser idénticas al sustituir apropiadamente sus variables. Determinar esto es una parte esencial de la resolución en lógica de predicados.
1.1 Ideas previas
Definición 1.1.
Considere los siguientes conceptos:
-
Un cláusula es un conjunto de literales.
-
Un cláusula es considerada implícitamente como una disyunción de sus literales.
-
Una cláusula unitaria consiste exactamente de una única literal.
-
El conjunto vacío de literales es la cláusula vacía, denotada como .
-
Una fórmula en forma clausular es un conjunto de cláusulas.
-
Una fórmula en forma clausular es considerada implícitamente como una conjunción de sus cláusulas.
-
La fórmula que es el conjunto vacío de cláusulas se denota como .
Definición 1.2.
Sean:
dos sustituciones efectuadas simultáneamente, y sean y los conjuntos de las variables que son sustituidas por y , respectivamente. Así , la composición de y , es la sustitución:
Ejemplo 1.3.
Sea
Entonces,
A partir de esta composición se puede obtener la sustitución como:
Bien se pudo haber realizado la sustitución en dos partes:
2 Unificación
Ejemplo 2.1.
Las dos literales y no colisionan. Sin embargo, al aplicarles la sustitución
obtenemos literales cerradas que colisionan: y .
La siguiente sustitución es más sencilla:
al aplicarse también genera un par de literales que colisionan: y .
Considere ahora la siguiente sustitución:
las literales que resultan son: y . Cualquier sustitución de por un término cerrado aplicada a estas dos literales producirá literales cerradas que colisionan.
Al encontrar la sustitución más sencilla que ocasione que dos literales colisionen, el resolvente será el resultado más general obtenido por la regla de resolución y será más propenso a colisionar con otra cláusula después de una sustitución apropiada.
Definición 2.2.
Sea un conjunto de átomos. Un unificador es una sustitución tal que:
Un unificador más general (umg) para es un unificador tal que cualquier unificador de puede ser expresado como:
para alguna sustitución .
3 Algoritmo de unificación por Martelli y Montanari
Si dos átomos son unificables, entonces comparten el mismo símbolo de predicado con la misma paridad. La unificación de átomos se entiende como la unificación de sus argumentos, es decir, la unificación de un conjunto de términos. El conjunto de términos a ser unificados será escrito como un conjunto de ecuaciones de términos.
- Ejemplo 3.1
-
La unificación de se expresa como un conjunto de ecuaciones de términos:
Definición 3.1.
Un conjunto de ecuaciones de términos está en forma de solución syss:
-
Todas las ecuaciones son de la forma donde es una variable.
-
Si la variable figura en el lado izquierdo de una ecuación, no figura en alguna otra ecuación.
Un conjunto de ecuaciones en forma de solución define la sustitución:
Algoritmo (Algoritmo de unificación de Martelli y Montanari)
Input: Un conjunto de ecuaciones de términos.
Output: Un conjunto de ecuaciones en forma de solución o reportar no unificable.
Ejecutar las siguientes transformaciones sobre el conjunto de ecuaciones mientras alguna de ellas sea aplicable:
-
1.
Transformar , donde no es una variable, en .
-
2.
Eliminar la ecuación .
-
3.
Sea una ecuación donde no son variables,
-
Si el símbolo de función más externo de y no es el mismo, el algoritmo termina reportando no unificable.
-
Si el símbolo de función más externo de y sí es el mismo, pero difiere en aridad, el algoritmo termina reportando no unificable.
-
De otro modo, reemplazar la ecuación por las ecuaciones .
-
-
4.
Sea una ecuación tal que figura en otro lugar dentro del conjunto.
-
Si figura en , y el término no es la variable misma, el algoritmo termina reportando no unificable.
-
De otro modo, transformar el conjunto al reemplazar todas las presencias de por en las otras ecuaciones donde figura.
-
Los algoritmos de unificación pueden ser bastante ineficientes por la verificación de la condición descrita en la regla 4, llamada verificación de presencias.
En la aplicación de la unificación en la programación lógica, la verificación de presencias se ignora y se toma el riesgo de una sustitución ilegal.
Ejemplo 3.2.
Considere el siguiente conjunto con dos ecuaciones de términos:
Aplicamos la regla 1 a la primera ecuación y la regla 3 a la segunda ecuación:
Aplicamos la regla 4 a la segunda ecuación reemplazando la presencias de por en las demás ecuaciones:
Aplicamos la regla 3 a la primer ecuación:
Aplicamos la regla 4 a la última ecuación reemplazando por en la primera ecuación; esto resulta en la ecuación la cual eliminamos usando la regla 2:
Finalmente, transformamos la segunda ecuación mediante la regla 1:
Así terminamos exitosamente el algoritmo, y afirmamos que
es un unificador más general del conjunto original de ecuaciones. Podemos verificar también que el unificador:
puede expresarse como .
Ejercicios 3.3.
-
1.
Ejecute el algoritmo de unificación de Martelli y Montanari para encontrar el umg, si es que existe, de los siguientes pares de átomos:
-
y .
-
y .
-
y .
-
y .
-
-
2.
Resolver el conjunto de ecuaciones de término siguiente mediante el algoritmo de Martelli y Montanari.
4 Algoritmo de unificación de Robinson
Definición 4.1.
Sean y dos átomos con el mismo símbolo de predicado y misma aridad, considere a cada uno como una secuencia de símbolos. Sea la posición más a la izquierda en la que las secuencias difieren. El par de términos , que comienzan en la posición de y , es el conjunto de desacuerdo de los dos átomos.
Algoritmo (Algoritmo de unificación de Robinson)
Input: Dos átomos y con el mismo símbolo de predicado y misma aridad.
Output: Un unificador más general para y o reportar no unificable.
Inicializar el algoritmo al definir y . Ejecutar sucesivamente la siguiente acción:
-
Sea el conjunto de desacuerdo de y . Si un término es una variable y el otro es un término tal que no figura en , entonces definimos , y generamos los átomos y para una nueva iteración del algoritmo.
Si no es posible ejecutar esta acción (debido a que ambos elementos y no son variables; o debido a que un término, digamos , es una variable y ésta figura en el otro término, ), los átomos no son unificables. Si después de ejecutar esta acción , entonces son unificables y el umg es .
Ejemplo 4.2.
Considere el par de átomos:
Comenzamos definiendo y . El conjunto de desacuerdo inicial es . Un término es la variable que no está presente en el otro término, así , y:
El conjunto de desacuerdo de y es así , y:
El conjunto de desacuerdo de y es así , y:
Como , los átomos son unificables y un umg es:
Ejercicios 4.3.
Ejecute el algoritmo de unificación de Robinson para encontrar el umg, si es que existe, de los siguientes conjuntos de literales:
-
.
-
.
-
.
-
.
-
.
5 Resolución general
Definición 5.1.
Sea un conjunto de literales. Entonces , es decir, es el conjunto de literales complementarias de las que están en .
Definición 5.2.
(Regla de resolución general) Sean y cláusulas sin variables en común. Sean y dos subconjuntos de literales tales que y se unifican por un umg . y se conocen como cláusulas de colisión y colisionan en el conjunto de literales y . , el resolvente de y , es la cláusula:
Ejemplo 5.3.
Sean y dos cláusulas, un umg para y es . El resolvente para las cláusulas y es
Las cláusulas son conjuntos de literales, así que cuando tomamos la unión de las cláusulas en la regla de resolución, literales idénticas se colapsarán; esto se llama factorización.
La regla de resolución general requiere en general que las cláusulas de colisión no tengan variables en común. Esto se logra mediante un proceso que se conoce como estandarización por partes: renombramos todas las variables en una de las cláusulas antes de ser usada por la regla de resolución. Todas las variables en una cláusula están implícitamente cuantificadas universalmente así que el renombre no cambia su satisfacibilidad22Considérese también la equivalencia , que muestra que en la forma clausular cada cláusula puede ser cuantificada universalmente de manera independiente. Finalmente, tome como ejemplo sencillo de “resolución” la situación en la que se satisface y , de lo cual se sigue que ..
Ejemplo 5.4.
Sean y dos cláusulas. Aplicando estandarización por partes tenemos que . Sea y ; estos conjuntos tienen un umg . La regla de resolución opera del siguiente modo:
Algoritmo (Procedimiento de Resolución General)
Input: Un conjunto de cláusulas .
Output: Si el algoritmo termina, reporta que el conjunto de cláusulas es satisfacible o insatisfacible.
Sea . Escoja dos cláusulas de colisión y sea . Si , el algoritmo termina y reporta que es insatisfacible. De otro modo, construir . Si para todos los posibles pares de cláusulas de colisión, el algoritmo termina y reporta es satisfacible.
Aunque un conjunto de cláusulas insatisfacible producirá eventualmente con una adecuada ejecución sistemática del procedimiento, la existencia de modelos infinitos significa que el procedimiento de resolución sobre un conjunto de cláusulas satisfacible puede nunca terminar, así que el procedimiento de resolución general no es un procedimiento de decisión.
Ejemplo 5.5.
Las líneas de la 1 a la 7 contienen un conjunto de cláusulas inicial. La refutación por resolución a partir de la línea 8 muestra que el conjunto de cláusulas inicial es insatisfacible. Cada linea contiene el resolvente, el unificador más general y los números con las cláusulas padre.
Ejercicios 5.6.
-
1.
Determine si los siguientes conjuntos de cláusulas son insatisfacibles.
-
.
-
.
-
.
-
-
-
2.
Mediante resolución determine si el siguiente argumento es correcto o no.
6 El método de resolución general el correcto y completo
Teorema 6.1 (La resolución es correcta).
Sea un conjunto de cláusulas. Si al aplicar el procedimiento de resolución se obtiene la cláusula vacía , entonces es insatisfacible.
Teorema 6.2 (La resolución es completa).
Si un conjunto de cláusulas es insatisfacible, la cláusula vacía puede obtenerse mediante el procedimiento de resolución.