5 LÓGICA DE PRIMER ORDEN Como mencionamos en el primer capítulo del curso, la lógica proposicional nos permite expresar conocimiento sobre situaciones que son de nuestro interés, mediante enunciados declarativos. Decimos que estos enunciados son declarativos en el sentido lingüístico del término, esto es, se trata de expresiones del lenguaje natural que son o bien verdaderas, o bien falsas; en contraposición a los enunciados imperativos e interrogativos. La Lógica Proposicional es declarativa en este sentido, las proposiciones representan hechos que se dan o no en la realidad. La Lógica de Primer Orden, que introduciremos en este capítulo, tienen un compromiso ontólogico más fuerte [39], donde la realidad implica además, objetos y relaciones entre ellos. Consideren los siguientes ejemplos de enunciado declarativo: 1. Julia es madre y Luis es hijo de Julia. 2. Toda madre ama a sus hijos. donde el enunciado (1) se refiere a los objetos de discurso Julia y Luis, usando propiedades de estos objetos, como ser madre; así como relaciones entre éstos, como ser hijo de alguien. El enunciado (2) se refiere a relaciones que aplican a todas las madres, en tanto que objetos de discurso. A esto nos referimos cuando hablamos de representación de un problema en el contexto de la Programación Lógica, a describir una situación en términos de objetos y relaciones entre ellos. Al igual que en el caso proposicional, si se aplican ciertas reglas de razonamiento a tales representaciones, es posible obtener nuevas conclusiones. Por ejemplo, conociendo (1) y (2) es posible inferir (vía una versión de Modus Ponens un poco distinta de la proposicional) que: 3. Julia ama a Luis. De forma que, sería deseable poder describir los objetos que conforman un universo de discurso, personas en el ejemplo; así como las relaciones entre ellos, siguiendo con el ejemplo hijo y madre; y computar tales descripciones para obtener conclusiones como (3). Al describir el problema que queremos resolver, también podemos hacer uso de funciones, relaciones en las cuales sólo hay un valor dada una entrada. Por ejemplo, “madre de” puede representarse como una función (todo hijo tiene una sola madre), pero “hijo de” no. Esto se ilustra en la figura 5.1. Como en todo sistema formal, al igual que hicimos con la Lógica Proposicional, será necesario especificar cuidadosamente los siguientes elementos: • Languaje. Este elemento está asociado a la sintaxis de la Lógica de Primer Orden. El lenguaje de un sistema formal está dado por un conjunto de símbolos conocido como alfabeto y una serie de reglas de construcción o sintácticas. Una 61 62 ������ �� ������ ����� luis madre de madre de pedro maria maria juana hijo de hijo de juana luis pedro Figura 5.1: La relación madre de es una función; mientras que hijo de no lo es. expresión es cualquier secuencia de símbolos pertenecientes al alfabeto. Cualquier expresión es, o no es, una fórmula bien formada (fbf). Las fórmulas bien formadas son las expresiones que pueden formarse con los símbolos del alfabeto a partir de las reglas de construcción y por tanto, pertenecen al languaje de la Lógica de Primer Orden. • Teoría de modelo. Este elemento está asociado a la semántica de la Lógica de Primer Orden. La teoría del modelo establece la interpretación de las fbfs en un sistema formal. Su función es relacionar las fbfs con alguna representación simplificada de la realidad que nos interesa, para establecer cuando una fbf es falsa y cuando verdadera. Esta versión de realidad corresponde a lo que informalmente llamamos “modelo”. Sin embargo, en lógica, el significado de “modelo” está íntimamente relacionado con el lenguaje del sistema formal: si la interpretación M hace que la fbf ↵1 sea verdadera, se dice que M es un modelo de ↵ o que M satisface ↵, y se escribe M |= ↵. Una fbf es válida si toda interpretación es un modelo para ella. • Teoría de prueba. Este elemento está asociado con el razonamiento deductivo. La teoría de la prueba tiene como objetivo hacer de cada enunciado matemático, una fórmula demostrable y rigurosamente deducible. Para ello, la actividad matemática debería quedar reducida a la manipulación de símbolos y sucesiones de símbolos regulada por un conjunto de instrucciones dadas al respecto. La construcción de tal teoría implica, además del lenguaje del sistema formal, un subconjunto de fbf que tendrán el papel axiomas en el sistema, y un conjunto de reglas de inferencia que regulen diversas operaciones sobre los axiomas. Las fbf obtenidas mediante la aplicación sucesiva de las reglas de inferencia a partir de los axiomas se conocen como teoremas del sistema. Este capítulo del curso introduce los elementos de la Lógica de Primer Orden, necesarios para abordar la resolución como regla de inferencia única de una forma restringida de Lógica de Primer Orden que nos permite automatizar su uso en el lenguaje de programación Prolog [8, 12]. 1 Los símbolos griegos se siguen usando como meta variables. �.� �� �������� �� �� ������ �� ������ ����� Brazo robótico E A D B C Mesa �.� Figura 5.2: El mundo de los bloques, usado en los ejemplos subsiguientes. �� �������� �� �� ������ �� ������ ����� Básicamente, la Lógica de Primer Orden, también conocida como Cálculo de Predicados, introduce un conjunto de símbolos que nos permiten expresarnos acerca de los objetos en un dominio de discurso dado. El conjunto de todos estos objetos se conoce como universo de discurso (U). Los miembros del universo de discurso pueden ser objetos concretos, ej., un libro, un robot, etc; abstractos, ej., números; e incluso, ficticios, ej., unicornios, etc. Un objeto es algo sobre lo cual queremos expresarnos. Como ejemplo, consideren el multi citado mundo de los bloques [20] que se muestra en la figura 5.2. El universo de discurso para tal escenario es el conjunto que incluye los cinco bloques, la el brazo robótico y la mesa: U = {a, b, c, d, e, brazo, mesa}. Una función es un tipo especial de relación entre los objetos del dominio de discurso. Este tipo de relaciones mapea un conjunto de objetos de entrada a un objeto único de salida. Por ejemplo, es posible definir la función parcial sombrero que mapea un bloque al bloque que se encuentra encima de él, si tal bloque existe. Las parejas correspondientes a esta función parcial, dado el escenario mostrado en la figura 5.2 son: {(b, a), (c, d), (d, e)}. El conjunto de todas las funciones consideradas en la conceptualización del mundo se conoce como base funcional. Un segundo tipo de relación sobre los objetos del dominio de discurso son los predicados. Diferentes predicados pueden definirse en el mundo de los bloques, por ejemplo, el predicado sobre que se cumple para dos bloques, si y sólo si el primero está inmediatamente encima del segundo. Para la escena mostrada en la figura 5.2, sobre/2 se define por los pares {(a, b), (d, c), (e, d)}. Otro predicado puede ser libre/1, que se cumple para un bloque si y sólo si éste no tiene ningún bloque encima. Este predicado tiene los siguientes elementos {a, e}. El conjunto de todos los predicados usados en la conceptuación se conoce como base relacional. Para universos de discurso finitos, existe un límite superior en el número posible de predicados n-arios que pueden ser definidos. Para un universo de cardinalidad b (cardinalidad es el número de elementos de un conjunto), existen bn distintas ntuplas. Cualquier predicado n-ario es un subconjunto de estas bn tuplas. Por lo tanto, n un predicado n-ario debe corresponder a uno de máximo 2(b ) conjuntos posibles. Además de las funciones y predicados, la flexibilidad de la Lógica de Primer Orden resulta del uso de variables y cuantificadores. Las variables, cuyos valores son objetos del universo de discurso, se suelen representar por cualquier secuencia de caracteres 63 64 ������ �� ������ ����� que inicie con una mayúscula. El cuantificador “para todo” (8) nos permite expresar hechos acerca de todos los objetos en el universo del discurso, sin necesidad de enumerarlos. Por ejemplo, toda madre . . . El cuantificador “existe” (9) nos permite expresar la existencia de un objeto en el universo de discurso con cierta propiedad en partícular, por ejemplo, 9X libre(X) ^ enLaMesa(X) expresa que hay al menos un objeto que no tiene bloques sobre él y aue se encuentra sobre la mesa. Revisemos estos conceptos formalmente. El alfabeto de la Lógica de Primer Orden se obtiene al extender la lógica proposicional con un conjunto numerable de símbolos de predicados (Pred) y funciones (Func). Se asume un conjunto infinito de variables (Var) que toman valores en el universo de discurso. |f| denota la aridad del predicado o función f, es decir, su número de argumentos. Las funciones de aridad cero se asumen como constantes. Los términos de nuestro lenguaje de Primer Orden se forman de variables, constantes y funciones aplicadas a términos. Por ejemplo: calif(hermano(alex), sma) denota la calificación obtenida por el hermano de Alex en el curso de Sistemas Multi-Agentes. Esta función debería regresar un entero entre cero y cien. Utilizando notación BNF: Definición 5.1 (Términos). Un término se define por: t ::= x | c | f(t, . . . , t) donde x 2 Var; c 2 Func tal que |c| = 0; y f 2 Func tal que |f| > 0. Observen que los constructores básicos de los términos son las variables y las constantes (functores de aridad 0). Se pueden formar términos más complejos usando functores de aridad mayor a cero, cuyos argumentos son a su vez términos. Por lo tanto, la noción de término depende del conjunto Func. Definición 5.2 (Sintaxis LLPO ). El lenguaje de la Lógica de Primer Orden LLPO se construye a partir de las variables Var, los functores Func y los predicados Pred como sigue: ::= P(t1 , . . . , tn ) | ¬( ) | ( ^ ) | ( _ ) | ( ! ) | (8x ) | (9x ) donde P 2 Pred es un símbolo de predicado de aridad n > 1; ti denota términos sobre Func; y x 2 Var. Observen que los argumentos de un predicado son siempre términos. También es posible considerar predicados de aridad cero, los cuales puden verse como variables proposicionales. �.� �� ��������� �� �� ������ �� ������ ����� Antes de introducir las definiciones formales de la semántica del Cálculo de Predicados, consideremos algunas expresiones posibles en está lógica, usando como ambiente el mundo de los bloques (Figura 5.2). Si queremos expresar que al menos algún bloque no tiene nada encima, podemos usar los predicados bloque y libre en la siguiente expresión: 9X bloque(X) ^ libre(X). Esta fbf expresa que existe un X tal que X es un bloque y X está libre (no tiene otro bloque encima). �.� �� ��������� �� �� ������ �� ������ ����� Observen que cuando usamos cuantificadores, siempre tenemos en mente el universo de discurso o dominio. El dominio puede especificarse en término de conjuntos. Luego, si el dominio D es el conjunto de constantes {a, b, c, d, e, mesa, mano}, podemos decir que B = {a, b, c, d, e} es el conjunto de bloques en D. Entonces plantear una expresión equivalente a 9X bloque(X) ^ libre(X), usando la fbf 8X libre(X), si especificamos que libre tiene como dominio B. En tal caso, se dice que B es la interpretación del predicado libre. Para un predicado de aridad dos, como sobre cuyos argumentos son bloques, podemos decir que su interpretación está en B ⇥ B. Para obtener un modelo para el lenguaje LLPO formamos la tupla hD, Vi, donde D es el universo de discurso, ej. cualquier clase de objetos sobre la que queremos expresarnos, y V es una función, tal que para cualquier predicado de aridad n se obtienen las n-tuplas que corresponden a la interpretación del predicado. En el ejemplo de la figura 5.2, consideren el predicado sobre de aridad dos. Su interpretación es un subconjunto de B ⇥ B. Para la escena mostrada, V(sobre) = {(a, b), (e, d), (d, c)}. Para una constante, la función V regresa la misma constante, ej. V(a) = a. Algunas veces la expresión V(↵), donde ↵ 2 Const [ Pred, se abrevia ↵V y se conoce como una interpretación. Una posible interpretación V para la escena mostrada en al figura 5.2 y su base relacional es: aV = a bV = b V = c V d = d eV = e c V = {(a, b), (e, d), (d, c)} enLaMesa V = {b, c} libre V = {a, e} sobre porEncimaV = {(a, b), (e, d), (e, c), (d, c)} Todo esto puede especificarse formalmente con la siguiente regla semántica: Definición 5.3 (Interpretación). Una interpretación V, con respecto a un dominio de discurso D es una función que satisface las siguientes propiedades: i) Si ↵ 2 Func y |↵| = 0, entonces V(↵) = ↵ (el caso de las constantes); ii) Si ↵ 2 Pred y |↵| = n tal que n > 0, entonces V(↵) ✓ Dn (el caso de los predicados). Observen que las variables no están incluidas en la interpretación. En lo que sigue, se asume que las variables en las fbf están acotadas, es decir, bajo el alcance de un cuantificador. Decimos que µ es una asignación de variables basada en el modelo M = hD, Vi si para todo ↵ 2 Var, µ(↵) 2 D. Podemos escribir M |= Vµ (↵) para expresar que ↵ es verdadera en el modelo hD, Vi cuando las variables en ↵ toman valores de acuerdo a la asignación µ, y tenemos que: Definición 5.4 (Semántica átomos). M |= ↵ si y sólo si Vµ (↵) 2 V. Definición 5.5 (Semántica negación). M |= ¬↵ si y sólo si M 6|= ↵. Definición 5.6 (Semántica disyunción). M |= (↵ _ ) si y sólo si M |= ↵ o M |= . 65 66 ������ �� ������ ����� Para formular las reglas semánticas de las expresiones que contienen cuantificadores, necesitamos el concepto de asignación de variables alternativa. La idea es que queremos que Vµ (8X ↵) sea verdadera, no solo cuando Vµ (↵) es verdadera, sino cuando V⇢ (↵) es verdadera para cualquier valor en D regresado por cualquier función de asignación ⇢. Observen que las variables libres en ↵ deben conservar el mismo valor en tal asignación. Se dice que la asignación de variables ⇢ es x-alternativa de µ, si y sólo si para toda variable ↵, excepto posiblemente X, ⇢(↵) = µ(↵). Entonces, tenemos que: Definición 5.7 (Semántica cuantificador universal). M |= 8X ↵ Si y sólo si V⇢ (↵) 2 V para toda asignación de variables x-alternativa ⇢ de µ. Definición 5.8 (Semántica cuantificador existencial). M |= 9X ↵ Si y sólo si existe una asignación de variables x-alternativa ⇢ de µ, tal que V⇢ (↵) es verdadera. Una fbf ↵ es válida en el modelo M si y sólo si M |= ↵ para toda asignación de variable µ basada en hD, Vi. Una fbf que es válida en todo modelo se conoce como universalmente válida. Un resultado estándar importante es el principio de remplazo, expresado de la siguiente forma: Sea ↵ cualquier fbf y X e Y dos variables cualesquiera. Sea M cualquier modelo de LLPO . Sea µ cualquier asignación de variables. Entonces cuando ⇢ es casi igual a µ excepto que ⇢(X) = µ(Y), V⇢ (↵) = Vµ (↵[Y/X]). Otro resultado es el principio de concordancia que expresa que cuando µ y ⇢ concuerdan en todas las variables libres de una fbf ↵, entonces V⇢ (↵) = Vµ (↵). Como consecuencia, cuando ↵ no contiene variables libres, entonces V⇢ (↵) = Vµ (↵) para cualquier ⇢ y µ. �.� ���������� �� �� ������ �� ������ ����� Volvamos al ejemplo de la introducción: 1. Toda madre ama a sus hijos. 2. Julia es madre y Luis es hijo de Julia. Conociendo (1) y (2) es posible concluir que: 3. Julia ama a Luis. Podemos formalizar este ejemplo en Lógica de Primer Orden como sigue: 1. 8X 8Y madre(X) ^ hijo_de(Y, X) ) ama(X, Y) 2. madre(julia) ^ hijo_de(luis, julia) 3. ama(julia, luis) Una vez que hemos formalizado nuestros enunciados, el proceso de inferencia puede verse como un proceso de manipulación de fbf, donde a partir de formulas como (1) y (2), llamadas premisas, se produce la nueva fbf (3) llamada conclusión. Estas manipulaciones se pueden formalizar mediante reglas de inferencia. Entre las reglas de inferencia de la lógica de primer orden encontramos: �.� ���������� �� �� ������ �� ������ ����� • Modus Ponens. O regla de eliminación de la implicación. Esta regla dice que siempre que las fbfs de la forma ↵ y ↵ ) pertenezcan a las premisas o sean concluidas a partir de ellas, podemos inferir : ↵ ↵) () E) • Eliminación de cuantificador universal. Esta regla expresa que siempre que una fbf de la forma 8X↵ pertenezca a las premisas o sea concluida a partir de ellas, una nueva fbf puede ser concluida al remplazar todas las ocurrencias libres de X en ↵ por algún término t que es libre con respecto a X (todas las variables en t quedan libres al substituir X por t. La regla se presenta como sigue: 8X↵(X) (8E) ↵(t) • Introducción de conjunción. Cuando las fbf ↵ y pertenezcan a las premisas o sean concluidas a partir de ellas, podemos inferir ↵ ^ : ↵ ↵^ (^I) La correctez de estas reglas puede ser demostrada directamente a partir de la definición de la semántica de las fbf en LLPO . El uso de las reglas de inferencia puede ilustrarse con el ejemplo formalizado. Las premisas son: 1. 8X8Ymadre(X) ^ hijo_de(Y, X) ) ama(X, Y) 2. madre(julia) ^ hijo_de(luis, julia) Al aplicar la eliminación de cuantificador universal (8E) a (1) obtenemos: 3. 8Y(madre(julia) ^ hijo_de(Y, julia) ) ama(julia, Y) Al aplicar nuevamente (8E) a (3) obtenemos: 4. madre(julia) ^ hijo_de(luis, julia) ) ama(julia, luis) Finalmente, al aplicar Modus Ponens a (2) y (4): 5. ama(julia, luis) La conclusión (5) ha sido obtenida rigurosamente, aplicando las reglas de inferencia. Esto ilustra el concepto de derivación. El hecho de que una fórmula ↵ sea derivable a partir de un conjunto de fórmulas se escribe ` ↵. Si las reglas de inferencia son consistentes (sound), siempre que ` ↵ entonces |= ↵. Esto es, si nuestra lógica es consistente, cualquier fbf que puede ser derivada de otra fbf, es tambien una consecuencia lógica de ésta última. Definición 5.9 (Consistencia y completitud). Un conjunto de reglas de inferencia se dice consistente si, para todo conjunto de fbf cerradas (sin ocurrencia de variables libres) y cada fbf cerrada ↵, siempre que ` ↵ se tiene que |= ↵. Las reglas de inferencia se dicen completas si ` ↵ siempre que |= ↵. 67 68 ������ �� ������ ����� �.� �������������� Formalmente, como ya se mencionó, una substitución es un mapeo de las variables del lenguaje a los términos del mismo: Definición 5.10 (Substitución). Una substitución es un conjunto finito de pares de la forma {X1 /t1 , . . . , Xn /tn } donde cada tn es un término y cada Xn es una variable, tal que Xi 6= ti y Xi 6= Xj si i 6= j. La substitución vacía se denota por ✏. Asumamos que Dom({X1 /t1 , . . . , Xn /tn }) denota al conjunto {X1 , . . . , Xn }, también conocido como dominio; y Range({X1 /t1 , . . . , Xn /tn }) denota al conjunto {t1 , . . . , tn }, también conocido como rango. Entonces la regla anterior expresa que las variables en el dominio de una substitución son únicas y no incluyen la substitución de la variable por si misma. La aplicación X✓ de la substitución ✓ a la variable X se define como: X✓ = t Si X/t 2 ✓ X En otro caso observen que para las variables no incluidas en Dom(✓), ✓ aparece como la función identidad. Es importante extender el concepto de substitución a las fbf: Definición 5.11 (Aplicación de una substitución). Sea ✓ = {X1 /t1 , . . . , Xn /tn } una substitución y ↵ una fbf. La aplicación ↵✓ es la fbf obtenida al remplazar simultáneamente ti por toda ocurrencia de Xi en ↵ (1 6 i 6 n). ↵✓ se conoce como un caso (instance) de ↵. Ejemplos: ama(X, Y) ^ madre(X){X/julia, Y/luis} = ama(julia, luis) ^ madre(julia) p(f(X, Z), f(Y, a)) {X/a, Y/Z, W/b} = p(f(a, Z), f(Z, a)) p(X, Y) {X/f(Y), Y/b} = p(f(Y), b) Definición 5.12 (Composición). Sean ✓ y dos substituciones de la forma: ✓ = {X1 /s1 , . . . Xm /sm } = {Y1 /t1 , . . . Yn /tn } La composición ✓ se obtiene a partir del conjunto: {X1 /s1 , . . . Xm /sm , Y1 /t1 , . . . Yn /tn } de la manera siguiente: eliminar todas las Xi /si para las que Xi = si (1 6 i 6 m) y eliminar también aquellas Yj /tj para las cuales Yj 2 Dom(✓) (1 6 j 6 n). Por ejemplo: {X/f(Z), Y/W}{X/a, Z/a, W/Y} = {X/f(a), Z/a, W/Y} Definición 5.13 (Substitución idempotente). Una substitución ✓ se dice idempotente si ✓ = ✓✓. �.� ���������� � �������� ��������� Se puede probar que una substitución ✓ es idempotente si y sólo si Dom(✓) \ Range(✓) = ;, es decir si el dominio y el rango de la substitución son disjuntos. Otras propiedades de las substituciones son: Definición 5.14 (Propiedades de las substituciones). Sean ✓, ↵ y E una fbf. Entonces: substituciones y sea • E(✓↵) = (E✓)↵ • (✓↵) = ✓(↵ ) • ✏✓ = ✓✏ = ✓ Observen que, aunque las substituciones son asociativas, éstas no son conmutativas. Las substituciones son importantes para definir una regla de inferencia de especial relevancia para nosotros, conocida como la regla de resolución. Con las definiciones introducidas en este capítulo podemos abordar el tema de los programas lógicos definitivos. �.� ���������� � �������� ��������� 1. El material aquí presentado está basado principalmente en los textos de Genesereth y Nilsson [20], capítulo 2; y el de Nilsson y Maluszynski [33], capítulo 1. Una lectura complementaria a estos textos son los capítulos 8 y 9 del texto de Russell y Norvig [39]. Una aproximación más computacional a la Lógica de Primer Orden, puede encontrarse en Huth y Ryan [22], capítulo 2. 2. Consideren el Mundo de Tarski [2] mostrado en la figura 5.3. Escriban una interpretación para la escena mostrada, considerando los siguientes predicados con su significado evidente: triángulo/1, cuadrado/1, pentágono/1, mediano/1, grande/1, pequeño/1, másPequeñoQue/2, aLaIzquierdaDe/2, enLaMismaColumna/2. 3. En la intepretación anterior, cuales de las siguientes fórmulas son safisfacibles y cuales no: a) triángulo(a) ^ cuadrado(c) ^ pentágono(e) b) mediano(a) ^ ¬grande(a) ^ ¬pequeño(a) ^ pequeño(f) ^ grande(c) c) másPequeño(f, a) ^ másPequeño(a, c) ^ aLaIzquierdaDe(f, a) ^ aLaIzquierdaDe(e, b) d) 8X8Y(aLaIzquierdaDe(X, Y) _ mismaColumna(X, Y) _ aLaIzquierdaDe(Y, X)) e) 8X8Y(cuadrado(X) ^ pentagono(Y) =) aLaIzquierdaDe(X, Y)) f) 9X9Y(triángulo(X) ^ cuadrado(Y) ^ mismaColumna(X, Y)) 4. En la misma interpretación, introduzca un predicado que exprese una relación entre tres objetos del universo de discurso. Utilice el predicado introducido en una fórmula bien formada satisfacible. 69 70 ������ �� ������ ����� Figura 5.3: Mundo de Tarski para los ejercicios 1 y 2.