Download 2 LÓGICA DE PRIMER ORDEN

Document related concepts

Lógica de primer orden wikipedia , lookup

Prueba formal wikipedia , lookup

Proposición wikipedia , lookup

Predicado (lógica) wikipedia , lookup

Axioma wikipedia , lookup

Transcript
2
LÓGICA DE PRIMER ORDEN
En términos generales, la Programación Lógica atañe al uso de la lógica para representar y resolver problemas. Más adelante precisaremos que, en realidad, usaremos una
lógica restringida a cláusulas de Horn y la resolución como regla de inferencia [17].
Por ahora, este capítulo introduce los conceptos de la Lógica de Primer Orden necesarios para abordar los aspectos formales de la Programación Lógica. Para ello, se
adopta un enfoque basado en sistemas formales, que nos permita describir el lenguaje, la teoría del modelo y la teoría de prueba de la Lógica de Primer Orden. Con
este aparato, se introducen los conceptos de unificación y resolución como regla de
inferencia.
Para expresar conocimiento sobre situaciones que son de nuestro interés, solemos
hacer uso de 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 tienen un compromiso ontólogico más fuerte [? ], 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
hijo. 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.
Si se aplican ciertas reglas de razonamiento a tales representaciones, es posible
obtener nuevas conclusiones. Esto concierne a la resolución de problemas en Programación Lógica. Por ejemplo, conociendo (1) y (2) es posible inferir (vía Modus Ponens)
que:
3. Julia ama a Luis.
La idea central de la programación lógica es 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 10.
19
20
������ �� ������ �����
luis
madre de
madre de
pedro
maria
juana
maria
juana
hijo de
hijo de
luis
pedro
Figura 10: La relación madre de es una función; mientras que hijo de no lo es.
Como en todo sistema formal, es necesario especificar cuidadosamente la sintaxis
de tales enunciados declarativos, es decir, que expresiones pertenecen al lenguaje de la
Lógica de Primer Orden, y cuales no; la semántica de estas expresiones, es decir qué
hace que una expresión sea verdadera o falsa; así como las reglas de razonamiento
que permiten concluir (3) a partir de (1) y (2). Tales cuestiones son el tema de estudio
de la lógica matemática.
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 y su uso en el lenguaje
de programación Prolog.
�.�
�������� ��������
La especificación cuidadosa de la sintaxis y semántica de la lógica de primer orden,
se consigue definiendo a ésta última como un sistema formal. Para ello, es necesario
considerar tres aspectos:
• Languaje. Este elemento está asociado a la sintaxis de la Lógica de Primer Orden y de los programas lógicos. 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 expresión es cualquier secuencia de símbolos
pertenecientes al alfabeto (primarios). 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
�.� �� �������� �� �� ������ �� ������ �����
Brazo robótico
E
A
D
B
C
Mesa
Figura 11: El mundo de los bloques, usado en los ejemplos subsiguientes.
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.
�.�
�� �������� �� �� ������ �� ������ �����
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 [9] que se muestra en la
figura 11. El universo de discurso para tal escenario es el conjunto que incluye los
cinco bloques, la el brazo robótico y la mesa: {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 11
1 El símbolo ↵ se usa aquí como una variable meta-lógica, es decir, una variable que tiene como referente
el lenguaje del sistema formal mismo, y por lo tanto, no forma parte del lenguaje del sistema en si. Se
usaran letras griegas como variables meta-lógicas.
21
22
������ �� ������ �����
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 11,
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 discurso de
cardinalidad b (cardinalidad es el número de elementos de un conjunto), existen bn
distintas n-tuplas. Cualquier predicado n-ario es un subconjunto de estas bn tuplas.
n
Por lo tanto, 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
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.
�.�.� Sintaxis de la Lógica de Primer Orden
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. Los predicados de aridad cero se asumen como constantes.
Los términos de nuestro lenguaje de Primer Orden se forman de variables, constantes y funciones aplicados a estos. Por ejemplo: calif(hermano(alex), sma) denota la
calificación obtenida por el hermano de Alex en el curso de Sistemas Multi-Agentes.
Formalmente, utilizando notación Backus Naur (BNF):
Definición 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 2 (Sintaxis) 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. Los predicados de aridad cero 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 11). 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 LFOL formamos el par 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 11, 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 11
y su base relacional es:
AV
= A
B
V
= B
C
V
= C
D
V
= D
EV
= E
V
= {(A, B), (E, D), (D, C)}
V
= {B, C}
Libre
V
= {A, E}
PorEncima
V
= {(A, B), (E, D), (E, C), (D, C)}
Sobre
EnLaMesa
23
24
������ �� ������ �����
Todo esto puede especificarse formalmente con la siguiente regla semántica:
Definición 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, entonces V(↵) ✓ Dn (el caso
de los predicados).
Observen que las variables no están incluidas en la interpretación, tal y como se
ha definido. Interpretar las variables de manera separada a los otros símbolos, es una
práctica aceptada. 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. Entonces 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 µ, entonces
tenemos que:
Definición 4 (Semántica átomos) M |= ↵ si y sólo si Vµ (↵) 2 V.
Definición 5 (Semántica negación) M |= ¬↵ si y sólo si M 6|= ↵.
Definición 6 (Semántica disyunción) M |= (↵ _ ) si y sólo si M |= ↵ o M |= .
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 7 (Semántica cuantificador universal) M |= 8x ↵ Si y sólo si V⇢ (↵) 2 V
para cada asignación de variables x-alternativa ⇢ de µ.
Definición 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 remplazamiento, expresado
de la siguiente forma: Sea ↵ cualquier fbf y x e y dos variables cualesquiera. Sea M
cualquier modelo de LFOL . 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)
25
26
������ �� ������ �����
La correctez de estas reglas puede ser demostrada directamente a partir de la definición de la semántica de las fbf en LFOL . 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 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 |= ↵.
�.�
��������������
Formalmente, como ya se mencionó, una substitución es un mapeo de las variables
del lenguaje a los términos del mismo:
Definición 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 extener el concepto de substitución a las fbf:
�.� ��������������
Definición 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 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 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 14 (Propiedades de las substituciones) Sean ✓, ↵ y
una fbf. Entonces:
substituciones y sea F
• 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.
27
28
������ �� ������ �����
�.�
Figura 12: Mundo de Tarski para los ejercicios 1 y 2.
���������� � �������� ���������
1. El material aquí presentado está basado principalmente en los textos de Genesereth y Nilsson [9], capítulo 2; y el de Nilsson y Maluszynski [18], capítulo 1. Una
lectura complementaria a estos textos son los capítulos 8 y 9 del texto de Russell y Norvig [23]. Una aproximación más computacional a la Lógica de Primer
Orden, puede encontrarse en Huth y Ryan [10], capítulo 2.
2. Consideren el Mundo de Tarski [3] mostrado en la figura 12. 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.