UNIVERSIDAD AUT6NOMA METROPOLITANA148.206.53.84/tesiuami/UAM3865.pdf · 2.2 Espacio de hipótesis...

52
Y-" ' UNIVERSIDAD AUT6NOMA METROPOLITANA Presentado por: castuuejo Garcia P'abllo I[gmacio Asesor del Proyecto: M. en C. René Mackinney R.

Transcript of UNIVERSIDAD AUT6NOMA METROPOLITANA148.206.53.84/tesiuami/UAM3865.pdf · 2.2 Espacio de hipótesis...

Y-" '

UNIVERSIDAD AUT6NOMA METROPOLITANA

Presentado por: castuuejo Garcia P'abllo I[gmacio

Asesor del Proyecto: M. en C. René Mackinney R.

F

Programación Lógica Inductiva

PROLOG0

El presente reporte es el resultado de la parte teorica de matematicas que analizamos durante los cursos de proyecto terminal I y I1 que se impartieron por el M. en C. Rene Mackinney R. durante los trimestre 96-1 y 96-P en instalaciones de la UAM Iztapalapa.

O

INDICE

Prologo

Indice

Introducción

Capitulo 1 Inferencia inductiva l . 1 Un primer ejemplo: Piolín 1.2 Otro ejemplo: Parentescos en la familia 1.3 Inferencia inductiva y la Filosofia de la Ciencia 1.4 Formulación y justificación de hipótesis 1.5 Ambiente lógico para conjeturar 1.6 Justificación 1.7 Cálculo de I para teorías con bases de Herbrand finitas 1 .8 Cálculo de I para teorías con bases de Herbrand infinitas 1.9 Algunos parámetros útiles 1.10 Cálculo de 1LP (parámetros)]

Capitulo 2 Formación de hipótesis 2.1 El espacio de hipótesis, H 2.2 Espacio de hipótesis enumerado H’ (B,E) 2.3 Generación del conjunto H(B,E) 2.4 Generación de Piolín 2.5 Hipótesis de cláusulas simples 2.6 Revisando el ejemplo de Piolín 2.7 Subsunción 2.8 La subsunción es un orden parcial 2.9 Subsunción e implicación

Capitulo 3 Subsunción lattice 3.1 Ordenamiento sobre H 3.2 Ordenamiento sobre literales 3.3 La generalización menos general 3.4 Instancia más general 3.5 Literal lattice 3.6 Cláusula lgg 3.7 Subsunción lattice 3.8 Subsunción relativa 3.9 Revisión de familias

Capitulo 4 Redundancia y búsqueda 4.1 Reduciendo fórmulas 4.2 Reducción de cláusulas 4.3 Reducción de familias

4.4 Teoría de reducción

4.6 Valores extremos 4.6.1 H, = O 4.6.2 H, = I,(B,E+)

4.5 Buscando HI

4.7 A* con estimador perfecto 4.8 Arbol de búsqueda 4.9 A* en H, 4.1 O Estimadores Solomonoff

Capitulo 5 Hipótesis en H2 5.1 Introducción 5.2 H,+(B,E+) 5.3 Lema de subsunción 5.4 I',(B,E+) 5.5 I',(B,E+) y Self-Recursión 5.6 Invención de predicados 5.7 Ordenamiento utilitario 5.8 Orden parcial y equivalencias 5.9 Utilidad es un lattice 5.1 O Refinamiento de cláusulas relativas

Apéndices

A Introducción de programas en Prolog con Markus

B Historia de PROLOG

c Códigos fuente de algunos programas desarrollados en Prolog

Bibliografía

INTRODUCCION

El propósito de este curso es estudiar el problema de Inferencia Inductiva en el marco de trabajo del cálculo de predicados de primer orden y el cálculo de probabilidades. Se espera aprender la teoría de Programación Lógica Inductiva usando el sistema ILP "Prolog'l. Prolog contiene un intérprete Prolog para probar programas lógicos. Sin embargo Prolog puede ser automáticamente generado desde ejemplos usando el algoritmo inductivo construido en Prolog.

La inferencia inductiva tiene muchas aplicaciones en la construcción automática de bases de conocimiento de datos. La programación lógica inductiva (ILP) hace uso de la inferencia inductiva para construir programas lógicos. ILP ha sido aplicado para descubrir nuevos conocimientos científicos en el área de predicción de estructuras de proteínas y diseño de drogas. Otra técnica computacional tales como las redes neuronales, están construidas para imitar el aprendizaje humano.

CAPITULO 1

Inferencia Inductiva

Los presentes apuntes son resultado de un curso sobre Programación Lógica Inductiva. Tienen como prerrequisito un curso de Lógica o programación lógica.

La programación lógica inductiva es un área de investigación muy joven. Algunas de las definiciones y resultados de estas notas son tomados de la literatura existente relacionada al tema. Existen otros conceptos e ideas que son presentados por primera vez.

l . 1 Un primer ejemplo: Piolín

Supóngase que se ‘sabe’ lo siguiente acerca de los pájaros:

todo pájaro tiene alas todo pájaro tiene un pico todo buitre es un pájaro. todos los buitres son carnívoros

Aquí la palabra ‘sabe’ se entrecomilló pues es posible que sólo se tenga conocimiento de estas cosas, si se ha visto un pájaro. Como esto es poco probable, vamos a Suponer que sólo estas declaraciones se creen como ciertas. El conjunto de creencias (quizá incompletas) acerca de los pájaros, puede ser establecido como un programa lógico, que llamaremos B, de la siguiente forma:

Imagínese ahora que se nos envía un telegrama desde África y se reporta que se vio una criatura, que llamaremos “Piolín”, diciendo que tiene pico y alas. Esta información puede representarse por el siguiente programa lógico:

C tiene alas(Pio1in) t

L tieneqico(Pio1ín) t E = {

-

En base a esto, no sería dificil Suponer, dado que sabemos lo establecido en el conjunto B, que “Piolín es un pájaro”. Esta suposición la podemos escribir de la siguiente forma:

H = pájaro(Pio1ín) t

Tomaremos esto como la hipótesis acerca de Piolín. Dicha hipótesis puede ser refutada si

Nótese que H no es una consecuencia de B y E, es decir: conocemos más cosas, es decir si tenemos más evidencias; por decir algo, que Piolín sea de plástico.

B A E Id= H

De cualquier forma, H nos permite explicar E relacionado a B; esto es

Así pues, la pregunta estará en cómo se deriva (tentativamente) la hipótesis H. Además nótese que también podría proponerse una hipótesis más especulativa como “buitre(Piolín)”, y esto también podría usarse para explicar toda la evidencia presente.

H’ = buitre(Pio1ín) t

Pero, ¿cómo sabemos que es más especulativa H’, de B y E, que H?

1.2 Otro ejemplo: parentescos en la familia

Los psicólogos desarrollistas como Piaget, creen que los procesos lógicos involucrados en la formación de hipótesis científicas y las pruebas, son una forma refinada del razonamiento empleado por el aprendizaje en los niños sobre el mundo. Imaginemos a nosotros mismos como niños aprendiendo las relaciones entre personas del círculo cercano de la familia. Se nos ha dicho que nuestro abuelo (grandfather) es el padre (father) de uno de nuestros padres (parent), pero aún no sabemos de cual de los dos. Tenemos entonces las siguientes creencias:

c grandfather()(, Y) t padre()(, 2) A parent(Z, Y) I father(Henry, Jane) t

I mother(Jane, John) t mother(Jane, Alice) t

B = {

Se nos ha dado la siguiente evidencia nueva acerca de nuestro abuelo:

f grandfather(Henry, John) t E = {

grandfather(Henry, Alice) t

Un niño listo que crea B y sea afrontado con los nuevos hechos, posiblemente supondrá los siguientes parentescos:

H = parent(X, Y) t mother()(, Y)

De nuevo podría notarse que H es una explicación para E en el mismo sentido que en el ejemplo previo; es decir:

1.3 Inferencia inductiva y la Filosofia de la Ciencia

La forma de razonamiento demostrada en los dos ejemplos anteriores, se conoce como razonamiento inductivo, y es muy común dentro de las ciencias naturales. Aristóteles describió esto en su obra “Prior Analytics”. Francis Bacon al discutir el empirismo de las nuevas ciencias naturales en el siglo XVII (con su obra Novum Organum), dio numerosos ejemplos de inferencia inductiva como un paradigma para el método científico.

Sin embargo, a pesar del esfuerzo de los filósofos como Hume, Mill, Pierce, Popper y Carnap, los fundamentos del razonamiento inductivo, siguieron siendo menos claros que aquellos de la lógica deductiva matemática. Desde los ~ O ’ S , varios investigadores de las Ciencias Computacionales, han intentado, con varios grados de éxito, encontrar una base lógica para la inferencia inductiva. Estos investigadores incluyen a Plotkin, Shapiro y la nueva escuela de la Programación Lógica Inductiva.

El propósito de éste curso es explorar la inferencia inductiva en el armazón del clásico cálculo de predicados de primer orden, la estadística Bayesiana y la Teoría de complejidad de Algoritmos. Aunque los ejemplos usados generalmente involucran cláusulas definitivas, la mayoría de los resultados se pueden extender a cláusulas lógicas completas.

1.4 Formulación y justificación de hipótesis

En los ejemplos de las secciones 1.1 y 1.2 se llevaron a cabo implícitamente las siguientes dos funciones:

Conjeturar. De acuerdo con el filósofo Pierce, el conjeturar es el proceso de formulación de hipótesis.

Justificación. El grado. de credibilidad que ponemos en una hipótesis dada de un cierto conjunto de evidencias. Los seguidores de Carnap hablan de un grado de “confirmación”, afirmando que ninguna

justificación absoluta es posible. Por otro lado los seguidores de Popper no verían que existe un problema de justificación, sino mejor dicho, un problema de decisión entre hipótesis que están compitiendo. Estos hablan de “corroboración”. El término justificación es usado aquí para introducir el nexo completo de problemas relacionados.

De hecho la formación de las teorías científicas involucra mucho más que los dos elementos de inducción mencionados. Los hechos deben ser recolectados, loe experimentos deben ser planeados, y las teorías alternativas deben ser probadas. El conjeturar y la justificación pueden ser vistas como los componentes centrales de éste proceso.

1.5 Ambiente lógico para conjeturar

Se definirán ahora los elementos involucrados en la inferencia inductiva y las relaciones que se deben mantener entre ellos. El problema de la inferencia inductiva es como sigue:

Dado, un conocimiento antecedente (previo) consistente de una conjunción finita de cláusulas: B = C , A C2 A . . .

y un conjunto de ejemplos positivos y negativos: E = ( E + , E - )

donde los ejemplos positivos E+ son una conjunción de literales de base positiva: + E = e, A e 2 ~ . . .

y los ejemplos negativos E‘ son una conjunción de literales de base negativa: E-= fi A f2 A . . .

encontrar una hipótesis H consistente de una conjunción finita de cláusulas: H = D ~ A D2 A . . .

tales que, las siguientes condiciones se mantengan

satisfacibilidad previa: B A E- I+ 0 satisfacibilidad posterior: B A H A E- I+ O

necesidad previa: B I+ E+

suficiencia posterior: B A H I= ES

<(F) representará los símbolos predicado encontrados en la fórmula F. Usualmente, no siempre se asume que:

<(H) c (t;(B) ” <(E+))

Cuando E consiste de conjuntos infinitos recursivamente enumerados, esto nos puede llevar a la pregunta de si <(B) es adecuado para una axiomatización de E+. Es fácil mostrar, usando un resultado de Rice, que éste problema no es decidible generalmente. Sin embargo Kleene mostró en los 50's que siempre es posible para axiomatizar finitamente un conjunto recursivamente enumerable E+ usando una argumentación finita de C;(B).

En el resto de éste texto, se mostrará cómo las condiciones mencionadas pueden ser usadas para derivar candidatos para H.

1.6 Justificación

Como generalmente habrá más de una hipótesis candidato que explique todos los ejemplos, necesitaremos una base sólida para graduar las hipótesis.

En esta sección se deriva un acercamiento Bayesian0 para la confirmación y corroboración para el problema de asignar probabilidades a las hipótesis. El acercamiento sugerido tiene la ventaja de ser aplicable incluso cuando sólo se dispone de ejemplos positivos.

Se Supone que estamos intentando inducir una definición del predicado pn de los ejemplos positivos solamente. El conjeturar tendrá dos soluciones extremas:

H = T = p(X1,. , .,X,)

H = l = E+ Cuando están presentes algunos ejemplos negativos, la aplicación de la condición de

satisfacibilidad posterior, reemplazará al Único elemento más alto, por un conjunto de elementos más altos.

En los siguiente, sea:

T = B A H

Asumamos que nuestro grado de creencia en una fórmula puede ser representado por una probabilidad subjetiva. Del cálculo de probabilidades podemos hacer uso del Teorema de Bayes: Teorema 1, Teorema de Bayes:

E representa la evidencia para T. Entonces

Antes se asumió que la evidencia es correcta, así que p( E ) = l . Ahora trataremos al conjunto de todos los posibles programas lógicos como un alfabeto 1 de creencias. Este alfabeto contiene

símbolos (programas lógicos) con frecuencia relativa igual a la probabilidad previa de los programas lógicos. Como éste alfabeto será grande, la probabilidad previa de cualquier programa lógico particular, será muy pequeña. Los programas lógicos más grandes pueden ser compuestos de una conjunción de programas lógicos más pequeños. Como la mayoría de los programas lógicos serán casi independientes, la probabilidad de la conjunción de dos programas lógicos P y Q o (P A Q) será aproximadamente p(P) y p(Q). De acuerdo a la teoría de la información de Shannon, la información de un programa lógico P es:

donde p(P) es la frecuencia relativa de P en C. Usando ésta definición, tenemos las siguientes propiedades para el contenido de información de programas lógicos:

Composición aditiva: (p(P A Q) = p(P) . p(Q)) 3 (I(P A Q) = I(P) + I(Q))

También tenemos el siguiente corolario del teorema de Bayes:

Corolario 2. Información de Bayes.

E representa la evidencia para el teorema. Entonces si T (= E

I ( T ) E ) = I ( T ) + I ( E I T ) y en otro caso I (T I E) = 00 .

Prueba. Como p(E) = 1, el teorema de Bayes nos da p(T 1 E) = p(T) * p(E I T).

Cuando T I+ E, p (E I T) = O, de aquí que I ( E I T ) = co.

Es posible que para cierta T, I (T I E ) 2 I ( I ). En este caso podríamos decir que no “comprime” los ejemplos, como tiene contenido de información más grande que satisface a los ejemplos mismos. El dato aleatorio (llamado a veces ruido) no puede ser comprimido. El principio de elección de la teoría más compresiva T, es conocido como el principio de descripción mínima de longitud. El resultado muestra que la teoría con descripción mínima es equivalente a escoger la teoría que tiene la probabilidad posterior de máximo de Bayes.

Teorema 3. Equivalencia de descripción mínima y máxima de probabilidad posterior Sea E la evidencia para un conjunto de teorías potenciales de C

minT, I ( T I E ) = -log, maxTE p ( T I E )

Prueba. Se sigue del hecho que log, es monótono y que

I ( T I E ) = - l o g 2 p ( T I E )

1.7 Cálculo de I para teorías con bases de Herbrand finitas

De las sección 1.6 tenemos que: I ( T 1 E ) = I ( T ) + I ( E )

La pregunta es ahora cómo calcular I ( T ) e I ( E 1 T ).

I( T ). Solomonoff define la función CT (T) como la longitud de bit de entrada mínima a una Máquina Universal de Turing con salida T. Esto puede ser visto como una medida universal para I (T). En términos Bayesianos, esto asigna una distribución de probabilidad previa a las teorías, que decrementa con el incremento de la complejidad de la teoría. Como CT es incalculable, debe haber necesariamente un grado de subjetividad en el cálculo de I (T). Sin embargo, la longitud de bit de cualquier esquema de decisión universal aplicado a T, dará un límite superior para CT .

0 I ( E 1 T ). Se Supone que O es el conjunto de todas las declaraciones observables. Sean entonces:

B(T) la base de Herbrand de T, O E B(T), M(T) el modelo de Herbrand mínimo de T, M(T) E B(T), M'(T) = { i f : f E (B(T) - M(T)) el modelo complementario de T, Q(T) = M(T) n O, las consecuencias positivas observables de T, Q'(T) = M'(T) n O, las consecuencias negativas observables de T, E'E Q(T) Y E- c Q'U)

Para teorías con modelos finitos

( IQU) I ) ( I Q V ) I ) I ( E I T ) = log, 1 I + log, I I

( [ E + [ ) ( 1E-I ) Lo anterior asume una distribución previa uniforme sobre el conjunto ejemplo. Sería necesario

un cálculo más sofisticado para una distribución previa no uniforme; por ejemplo, asignaremos probabilidades previas más bajas a ejemplos textualmente más complejos.

1.8 Cálculo de I para teorías con bases de Herbrand infinitas

El cálculo de I( E 1 T ) asumió que B(T) fuese finito. En ésta sección haremos un análisis similar al considerar los subconjuntos de M(T) derivables en Profundidad finita h.

I ( E 1 T ). Se asume que B(T) y M(T) son infinitos. Sean entonces

Sh (T) es el conjunto exitoso finito (un subconjunto de M(T)) el cual puede ser derivado con pruebas de a lo más profundidad h,

Fh (T) es el conjunto fallido finito (un subconjunto de M(T)) el cual puede ser derivado con pruebas fallidas de a lo más profundidad h,

Sea h el valor mínimo tal que E+ c Qh (T) y E- QYh (TI. Entonces:

I ( E J T ) = log, 1 I + log, I I ) E + ) ) ) E - (

Esto asume una distribución previa uniforme sobre todos los ejemplos probados o desaprobados en profundidad a lo más h. De nuevo un cálculo pesado más sofisticado sería necesario para calcular una distribución previa no uniforme sobre ejemplos; por ejemplo, los probados o desaprobados en profundidad más grande, podrían ser asignados a probabilidades previas más bajas.

1.9 Algunos parámetros útiles

P ( T ) es el número de símbolos predicado en el programa lógico T, C ( T ) es el número de constantes en T, V ( T ) es el número de variables en cualquier cláusula en T, a es la aridad máxima de cualquier símbolo predicado en T, 1 es la cardinalidad máxima del cuerpo de cualquier cláusula en T, y I T 1 es el número de cláusulas en T.

l . 1 O Cálculo de I LP (parámetros) I

A(T) es el conjunto de átomos que pueden ser construidos con símbolos predicado, constantes y variables de T. ]A(T)I 5 P(T) . (C(T) + V(T))a.

C(T) es el conjunto de cláusulas definitivas que pueden ser obtenidas con cabezas elegidas de A(T) y cuerpos que tengan a lo más 1 átomos elegidos de A(T)

T(T) es el conjunto de las teorías que contienen a lo más 1 T 1 cláusulas elegidas de C(T),

I(T) = log2 1 T ( T ) I + I (parámetros). Como sólo estamos interesados en la complejidad relativa de las teorías, ignoraremos el valor de I (parámetros ) como una casi constante superior para transmisión de teoría.

CAPITULO 2

Formación de hipótesis

2.1 El espacio de hipótesis, H

En el capítulo 1, se derivó una solución óptima de Bayes para el problema de elegir la mejor hipótesis H, dado un conocimiento previo B, y ejemplos no explicados E. Esto se logró al encontrar una H que satisface las cuatro condiciones de la sección 1.5 y que minimizan I ( B A H 1 B A E ), donde

I ( B A H I B A E) = I ( B A H ) + I ( E I B A H ) - I ( B )

Sin embargo, un método para un conjunto enumerado de hipótesis sobre el cual, esta función, debe ser minimizado, aún no ha sido discutido. Primero se define el conjunto candidato de hipótesis (a veces es mencionada en la literatura como “espacio de hipótesis”).

Definición 2.1 H ( B, E ) es el conjunto de todas las hipótesis H que satisfacen las cuatro condiciones de la sección 1.5

Recuérdese que sólo aquellas H para las cuales I ( B A H I E ) 2 I ( B A E ) son de interés (según la sección 1.6).

Teorema 2.2 El subconjunto de IT(B, E) o H ( B, E ) para el cual I(B A E I E ) I I( B A E ) es finito. Prueba. B A E puede ser representado como una cadena binaria finita que podemos llamar z ( B A E ). Existen sólo un número finito de cadenas más cortas que z(B A E). Por tanto sólo hay un número finito de formas para construir el código de medición I(B A H 1 E) y consecuentemente sólo un número finito de H’s en H’(B, E).

Ahora cualquier elemento de IT(B, E) que minimice I(B A H 1 B A E) es una hipótesis óptima de Bayes.

2.2 Espacio de hipótesis enumerado W(B, E)

Un acercamiento obvio para generar el conjunto finito H(B, E) se sugiere por las construcciones de conjunto combinatorio de la sección 1 .lo. El conjunto z(B A E) contiene todas las soluciones para B A H para las cuales H tiene sólo tantos átomos en el cuerpo como cualquier cláusula en B. Ciertamente éste conjunto es potencialmente incompleto. Sin embargo, por el resultado de un ejercicio, se encontró que con el sencillo ejemplo de ‘Piolín’ 1 z(B A E) 1 E 229. Esto excluye el acercamiento enumerativo para, inclusive, el caso en que E es ligeramente grande.

Nótese también que la mayoría de las soluciones en z(B A E), no son muy considerables pues no satisfacen las condiciones de la definición en 2.1. Lo que se requiere es, por tanto, un método que genere todas (y solamente) las cláusulas en H(B, E)

2.3 Generación del conjunto H ( B, E )

La fórmula de Bayes se deriva por una transformación algebraica de la definición de probabilidad de una evidencia, dada una hipótesis. Esta permite derivar la probabilidad condicional de una hipótesis, dada la probabilidad condicional de la evidencia.

Esta mejor considerado el hecho de que si hay una forma análoga que la formación de hipótesis de si misma pueda ser derivada por manipulación algebraica de las relaciones lógicas entre conocimiento previo, hipótesis y evidencia. Considérese de nuevo la condición de suficiencia posterior presentada en la sección 1.5

B A H )= E+

El siguiente teorema muestra cómo esta relación puede ser hecha una, que permita que el espacio de hipótesis sea derivado lógicamente del conocimiento antecedente y ejemplos.

Teorema 2.3 Para cada hipótesis H tal que B A H I= E’, -H puede derivarse de B A -E+ usando cualquier método de derivación que sea sólido y completo.

Prueba. Es necesario mostrar que B A -E+ I= -H. Así pues, de acuerdo con el teorema de deducción

y aplicando el teorema de deducción de izquierda a derecha B )= -H v E+. Ahora aplicando el Teorema de la deducción de derecha a izquierda, tenemos finalmente B A -E’ )= -H.

F, A F 2 (= F3 s iy solo si F1 I= -F2 v F3

Este teorema proporciona un método firme y completo para generar H ( B, E ).

2.4 Generación de “Piolín”

El teorema 2.3 se ilustrará con el ejemplo de Piolín de la sección l. 1

f tiene-alas(X) t pajaro(X) I

I tieneqico(X) t pájaro(X) I

B A T E + = { I I carnívoro(X) t buitre(X) I I t tiene - alas(Pio1ín) A tieneqico(Pio1ín)

pájaro(X) t buitre(X)

Si se asume que H es una cláusula simple, entonces -H es una conjunción de literales base (posiblemente skolemizadas). El conjunto de literales base derivables usando resolución lineal de B A -E+ son las siguientes :

-IH = ’pájaro (Piolín) A -buitre(Piolín)

Por tanto I, = pájaro (Piolín) v buitre(Pio1ín) t

Nótese que H = E+ no sería sólo una cláusula de hipótesis.

2.5 Hipótesis de cláusulas simples

El problema de generación de una hipótesis de cláusulas simples ha sido estudiado extensivamente en la literatura avanzada de Plotkin. Una noción central es la de la hipótesis más específica relativa para B y E+. Esto es denotado por IH(B,E+) y definido como sigue.

Definición 2.5 &(B,E+) es la negación de la conjunción de literales de BAE+.

En el ejemplo 2.4 una cláusula única fue derivada. Sin embargo en la sección 1.1 había por lo menos dos diferentes candidatos a Hipótesis, H = pájaro(Pio1in) t, y H' = buitre(Pio1in)t. El siguiente teorema aclarara esta situación. Teorema 2.6. Sea B conocimientos previo, E+ son ejemplo, B J+ E+, -(&@,E+)) es la conjunción de literales de BATE+ y H es una cláusula arbitraria.

BAH (=E+ si y solo si H+&(B,E+).

Prueba. Si parte Supone H + &@,E+) y B A H I+= E+. Pero B A IH(B,E+) I= E+ y B A H (= B A IH(B,E+). Por lo tanto B A H I= E+.

Solo si parte. Supone B A H )= E+ y H 4+ IH(B,E+). Esto implica y(lH v IH(B,E+)) por lo tanto H A -(LH(B,E+)). Pero B A ,E+ I= -H lo cual significa que B A -E+ debe ser insatisfacible por que H es verdadero. Pero entonces B )= E+ lo cual contradice la suposición y completa la prueba.

2.6 Revisando el ejemplo de Piolín

En el siguiente ejemplo el teorema 2.6 es demostrado con el problema de Piolin de la

Ejemplo 2.7. En el problema 2.4 se encontró que: sección l. l.

-LH(B,E+) = pájaro(Pio1ín) v buitre(Pio1ín)t

El siguiente es el conjunto de todas las cláusulas, las cuales lógicamente implican

H, = pájaro(pio1in)t

H2 = buitre(Pio1in)t

H3 = pájaro(x)t

H, = buitre(x)t

Para cada i, 1 5 i 5 4

2.7 Subsunción

Definición 2.8 H+,(B,E+) es el conjunto de todas las cláusulas H tales que H+IH(B,E+) . Nota que H+,(B,E+) contiene todas las cláusulas de hipótesis simple, las cuales pasan la prueba de suficiencia

posterior. No todas estas cláusulas serán necesarias para pasar la prueba de satisfacibilidad posterior. Por lo tanto H(B,E) c H+,(B,E+). Asumiendo por el momento -(~.H(B,E+>) es finito. ¿Cómo es H+,(B,E+) enumerado? En un principio puede ser hecho definiendo un ordenamiento sobre este grupo. En la siguiente definición de cláusulas son tratadas como conjuntos.

Definición 2.9. Dada la cláusula C y la cláusula D (grupo de literales). C incluye D o C > D si y solo si existe una substitución 8 tal que C0 c D.

2.8 La subsunción es un orden parcial

En esta sección se mostrará que la subsunción define un orden sobre las cláusulas.

Teorema 2.8. I es un orden parcial sobre las cláusulas.

Prueba. Es necesario probar que I es reflexivo, transitivo y asimétrico.

Reflexivo. Para algún C, C I C con 0 = $. Transitivo. Supone C I D con substitución $ y D <= D' con substitución uy. Entonces C$v D' y por lo tanto C I D'. Asimétrico. Suponer C I D, I E D, I tiene de predicado el símbolo p y p no es encontrado en C.

No puede existir una substitución 0 tal que Z0 en D por lo tanto D I C.

La cláusula de equivalencia es definida en una forma estándar.

2.9 Subsunción e implicación

La subsunción esta relacionada con la implicación de la siguiente forma.

Teorema 2.12. Sean C y D dos cláusulas. C I D solamente si C + D.

Prueba. Por contradicción. Suponer C I D y C 4-+ D. C -+ D si y solamente si C A -D (= O . Pero debido a que C I D con substitución 8 cada literal en -D resuelve con una literal complementaria en C con un cuadro de substitución 8' = 86 donde 6 es un cuadro de sustitución, quienes marcan el grupo de constantes de Skolem -D. Esto contradice lo supuesto es decir que C 4- D y se completa la prueba.

De cualquier forma la subsunción no es equivalente a la implicación entre cláusulas.

Teorema 2.13. Sean C y D dos cláusulas. C -+ D no implica C I D. Prueba. Considera las cláusulas

C = nat(s(x)) t nat(x). D = nat(s(s(x))) t nat(x).

D es C resuelta por ella misma y por lo tanto C + D. No obstante C no incluye D.

CAPITULO 3

Subsunción lattice

3.1 Ordenamiento sobre H

En el último capítulo mostramos que a cada elemento del espacio de hipótesis H puede ser derivado deductivamente haciendo uso de la siguiente relación.

Este conjunto de hipótesis tiene un elemento máximo O, un botón-extra elemento de I H(B,E+) y es ordenado por implicación (teorema 2.6). Cuando las hipótesis son restringidas por una cláusula simple, estas tiene un subordenamiento llamado subsunción (sección 2.7).

En este capítulo mostraremos la subsunción imponiendo una lattice sobre las literales y cláusulas.

Definición 3.1. Una lattice es un conjunto parcialmente ordenado en la cual cada par de elementos a, b que tiene el más grande de los pequeños en el límite (glb) (representado por a n b) y el más pequeño de los grandes en el límite (lub) (representado por a 1-1 b) dentro del conjunto.

3.2 Ordenamiento sobre literales

Primero comenzamos definiendo una lattice sobre literales (átomos y átomos negativos). Definición 3.2. Dadas las literales 1 y m, 1 2 m si y solamente si existe una substitución 8 tal que m = 20.

Lema 3.3. 2 es un orden parcial sobre literales.

Prueba. Es necesario mostrar que 2 es reflexivo, transitivo y asimétrico.

Reflexivo. Para alguna literal 1, 12 1 con substitución 8 = O.

Transitiva. Suponiendo I2 m con substitución 4 y m 2 m' con substitución y. Entonces 12 m con substitución $v.

Asimétrica. Sean I = -@(x)) y m = y(p(f(x))). 1 2 m con substitución (x/f(y)} pero no hay substitución la cual trace m para 1.

Equivalencia y clases equivalentes son definidas como sigue.

Definición 3.4.1 = m si y solo si 1 2 m y m 2 1.

Definición. 3.5. El conjunto de literales equivalentes para 1 es denotado [I] y definido por.

[l] = {l'[l' = 1)

3.3 La generalización menos general

Definición 3.6. Las literales I y m son compatibles y tienen el mismo símbolo predicador y signo.

En el siguiente lgg (least general generalisation) es el lub de las literales da el ordenamiento impuesto por 2 .

Lema 3.7 El lgg de dos literales compatibles I y I' es única para equivalencia de literales.

Esbozo de Prueba. Por construcción. I y I' son compatibles, por lo tanto m = lgg(1,I') tendrán el mismo símbolo del predicado y signo como I y t. Suponer los argumentos de 1 y I' y m es (sl,,..,sn), (sl', ..., s i ) y (tl, ..., tn). La prueba es recursiva en los términos. Para cada i considera los casos en los cuales Si y Si' hacen y no hacen la misma función de símbolo.

El mismo símbolo de función. ti tendrá el mismo símbolo de función como si y si' y los términos de ti serán los lggs de los términos correspondientes de Si y Si'.

Diferentes símbolos de función. ti es la variable Vsi,sil .

El esbozo de prueba de este lema proporciona un algoritmo para construir el "lubll o generalización menos general (lgg) de literales. Esto es ilustrado en el siguiente ejemplo.

Ejemplo 3.8. sean Z = member(3, cons(2, cons(3,nil))). I' = member(5, cons(2, cons(6,nil))).

Siguiendo la construcción de la prueba conseguimos

m' = member(x, cons(y, cons (x,~))).

3.4 Instancia más general

Lema 3.9 (lema de unificación). Sean Z y I' dos literales. Si Ze = 1'8 para alguna substitución 8 (un unificador), existe un unificador más general (mgu), p con las propiedades.

1) zp = Z'p.

2) Para alguna G si lo = Z'o. Existe un 6 tal que lo = Zp6 = Z'p6.

Robison da un algoritmo para construir el mgu.

Definición 3.10 Dadas las literales Z y Z la cual tiene mgu p. Su instancia más general (mgi) es Zp = Z'p.

En el siguiente ejemplo se muestra la unificación de literales.

Ejemplo 3.1 1. Sean

Z = append(u,u,v).

I' = append(cons(x,nil), y, cons(x,cons(x,nil))).

p = (u/cons(x,nil), y/cons(x,nil), v/cons(x, cons(x,nil))>

Zp = append(cons(x,nil), cons(x,nil), cons(x, cons(x,nil))).

= I'p.

3.5 Literal lattice

El conjunto de literales ordenadas por 2 es extendido por la adición de los elementos T y 1. Definición 3.12 Literales+ = { 1 I 1 es una literal} u { T, L}.

Ahora Literales+ es una lattice en la cual n y 1 1 son definidas como sigue. -

Definición 3.13.

(b) si 1 y I' tienen lgg m entonces [ZJ 1-1 [l'] = [m] de otro modo [ZJ 1-1 [1'] = [TI.

(b) si l y I' tienen mgi m entonces [ZJ - [1'] = [m], de otro modo [l] - [l'] = [I] .

Las siguientes propiedades se conservan.

3.6 Cláusula lgg

Plotkin prueba que las cláusulas C y D tienen un lub en la ordenación de las subsunción. Esto es el lgg de las cláusulas y es definido como sigue.

Lema 3.14. Sean C y D dos cláusulas (conjunto de literales). El lub de C y D en la ordenación de la subsunción es

lgg(C,D) = {lgg(l,m) : 1 E C y m E D y 1 y m son compatibles}

Prueba. lgg(C,D) 2 C, D con substitución {v/s : vs,t E Igg(C,D)} y (v/t : vs,t E lgg(C,D)}. Ahora se debe probar que no existe D' tal que lgg(C,D) > D 2 C, D. Suponer que D' existe. para cada literal m' en D' deben ser literales 1 en C y m in D tal que m' 2 I, m por que de otro modo D' 2 C, D. Cada literal m' en D' debe ser el lgg de un par de literales 1 en C y m en D de otro modo deben ser remplazados por literales más especificas. D' deben ser equivalentes para una cláusula la cual contiene todas las literales, de otro modo lgg(C,D) deber ser más específico. por lo tanto D es equivalente a lgg(C,D) lo cual contradice lo supuesto y se completa la prueba.

3.7 Subsunción latticce

El glb dentro de la subsunción lattice es también llamada la instancia mas general (mgi) de dos cláusulas.

Lema 3.15. Sean C y D cláusulas que no comparten variables. El glb de C y D en la ordenación de la subsunción es.

mgi(C,D) = C u D

Prueba. Es trivial.

Definiremos ahora la lattice sobre H1+(B,E+) restringiendo por subsunción.

Definicion 3.16. Sean O y I = I,(B,E+).

nota que este es un subconjunto de HI+ @,E+) . Ahora con la definición de la clase de equivalencia como sigue.

[C] = {C' : C' = C}.

donde las cláusulas son estandarizadas aparte entonces HI+(B,Ef) es una lattice ordenada por subsunción como sigue.

Otra vez n y 1-1 son conmutativas y asociativa. 1-1 es distributiva sobre n aunque n no es distributiva sobre 1-1 .

3.8 Subsunción relativa Las cláusulas lattices de la sección previa aun no provee de un método eficiente para la

generación de hipótesis. En esta sección se verá como de la generalización menos general de los ejemplos de espacios de hipótesis separadas se pueden formar.

Definición 3.18 (relativo a subsunción). Las cláusulas de hipótesis simples H incluyen el ejemplo positivo e+relativo al conocimiento previo B si y solo si H 2 &@,e+).

Definición 3.19 (relativo a la generalización menos general ). La cláusula de hipótesis simple H es la generalización menos general (rlgg,) de e+I y e+* si y solo si

en la parte izquierda se puede leer para verificar que la relativa subsuposición forma una lattice sobre cláusulas relativas para dar el conocimiento previo. Note que cada subconjunto de los ejemplos tienen un Único rlgg. En particular, existe un Único rlgg el cual cubre todos los ejemplos positivos.

3.9 Revisión de familias

Ejemplo 3.20 reconsidere el ejemplo de las familias (sección 1.2).

I,,(B,e,+) = grandfather(Henry, John) v parent(Jane, John) t padre(Henry, Jane) A mother(Jane,John) A mother(Jane, Alice).

lH(B,e,+) = grandfather(Henry, Alice) v parent(Jane, Alice) t padre(Henry, Jane) A mother(Jane, John) A mother(Jane, Alice).

rlggB(el+, e[)= grandfather(Henry, x) v parent(Jane, x)+ padre(Henry, Jane) A mother(Jane, x) A mother(Jane, y) A

mother(Jane, John) A mother(Jane, Alice).

Nota que la hipótesis en la sección 1.2

H = parent(x,y) t mother(x,y).

la cual incluye rlgg, (el+, e;) .

CAPITULO 4

Redundancia y búsqueda

4.1 Reduciendo fórmulas

En el ejemplo 3.20 del capítulo anterior se encontró que la generalización menos general de un conjunto de ejemplos relativos al conocimiento previo puede ser en un grado razonable una cláusula compleja. Parte de la complejidad es debida al hecho de que muchas literales en la rlgg son redundantes. La primer mitad de este capítulo involucra un análisis del problema de la eliminación de la redundancia en claúsulas y en teorías clausales (conjunción de cláusulas). Sin embargo, cuando la redundancia es eliminada, la rlgg puede contener un gran número de literales. De esta manera, la rrlg no es necesariamente la cláusula que minimiza P(B A H I B A E).

La segunda mitad de este capítulo implica una discusión de las formas de búsqueda eficiente del espacio de hipótesis H, usando la inclinación impuesta por p(B A H 1 B A E) (Capítulo 1). Se muestra que si un estimador perfecto (contenido en la información Solomonoff) es válido, entonces la búsqueda podría ser efectuada sin backtracking.

4.2 Reducción de cláusulas

La cláusula rlgg construida en el ejemplo 3.20 es razonablemente complicada. Desde la revisión de esta cláusula parece contener un número de literales redundantes. La redundancia lógica de literales en cláusulas es formalizada como sigue

Definición 4.1 La literal I es redundante en la cláusula C v I a la teoría previa B si y sólo si

El siguiente teorema demuestra un método eficiente de ensayo para literales redundantes usando un teorema de prueba.

Teorema 4.2 La literal I es redundante en la cláusula C v I relativa a la teoría previa B si y sólo si

BA(CvZ) )= C

Demostración. De acuerdo con la Definición 4.1, I es redundante en C si y sólo si BA(C v I> = BAC. En otras palabras, es necesario mostrar que

B A C (= BA(CVZ) (4.1)

Pero (4.1) es necesariamente verdad debido a que BAC trae consigo B y C implica (Cvl) de acuerdo con el Teorema 2.13. Por lo tanto solo es necesario mostrar (4.2). Sin embargo, es suficiente con probar

B A ( C V ~ ) I= C

Esto completa la prueba.

Definición 4.3 Se dice que la cláusula C está reducida con respecto al conocimiento previo B si y sólo si ninguna literal en C es redundante.

Las cláusulas son reducidas eliminando iterativamente todas las literales redundantes.

4.3 Reducción de familias

Ejemplo 4.4 Considerar otra vez la rlgg construida en el ejemplo 3.20

grandfather(x,y) t father(x,z) A parent(z,y) I I father(Henry,Jane) t

1 mother(Jane,John) t B = {

I mother(Jane,Alice) t

c v I = rlgg, (e1+,e2+) grandfather(Henry,x) v parent(Jane,x)t father(Henry,Jane) A mother(Jane,x) A

mother(Jane,y) A mother(Jane,John) A

mother( Jane,Alice)

I = -mother(Jane,y)

Es necesario probar que B A (C v I) (= C. Esto es equivalente a mostrar

B A ( C V I ) A - C I= O

Esto requiere una prueba del objetivo mother(Jane,y) usando B. Ello se logra con la substitución { y/John) o alternativamente (y/Alice). Si la eliminación de las literales redundantes es iterativa, la cláusula rlgg reducida es

grandfather(Henry,x) v parent(Jane,x) t mother( Jane,x)

4.4 Teoría de reducción

La aproximación para reducir cláusulas, desarrollada en las dos últimas secciones puede ser aplicada para eliminar cláusulas redundantes en teoría clausal (conjunción de cláusulas).

Definición 4.5 La cláusula C es redundante en la teoría B A C si y solo si B A C -= B.

El siguiente teorema ofrece un método eficiente de prueba para cláusulas redundantes en teoría clausal usando un teorema prueba.

Teorema 4.6 La cláusula C es redundante en B A C si y solo si

B I = C

Demostración. De la Definición 4.5 es necesario mostrar que

B A C I = B

B (= B A C

Pero (4.3) debe necesariamente ser verdadero debido a que cada modelo de B A C es un modelo de B. Por lo tanto es solamente necesario probar (4.4). Sin embargo, obviamente B trae consigo B, así que sólo es necesario mostrar

B I= C Esto completa la prueba.

Definición 4.7 Se dice que B está reducida si y solo si ninguna cláusula en B es redundante.

Las teorías clausales son reducidas iterativamente, eliminando todas las cláusulas redundantes.

Ejemplo 4.8 Considerar el programa lógico que contiene parte de la definición de Peano de los números naturales.

I

I B = { natural(succ(x)) t natural(x)

C = natural(succ(succ(y))) t natural(y)

Es necesario mostrar B I = C. Esto puede probarse si B A 7 C I = O donde

de donde $Y = 3y (y cuantificada existencialmente).

$Y es una constante Skolem y natural(succ(succ($Y))) es el objetivo a ser probado. Este objetivo puede ser ser probado por recursión en la primer cláusula. Por lo tanto B (= C y así C es redundante. Debido a que la cláusula simple en B no es redundante, B esta reducida.

4.5 Buscando HI

Considerar el problema de búsqueda del espacio de hipótesis definido por

HI = (H : cláusula H y O 2 H 2 I,(B,E+) y B A H A E- I+ O ]

con el objetivo de reducir al mínimo I(B A H I B A E). De acuerdo con la Sección 1.7 I(B A H 1 B A E) es

Hay dos cláusulas de inicio obvias para tal búsqueda:

l. H, = U (la cláusula vacía), 2. H, = IH(B,E+) (la cláusula más específica).

Estas cláusulas principales inducen a las siguientes formas de búsqueda:

Búsqueda General a específica. Recorre la subsunción lattice desde Hi = O desarrollando cada una de las siguientes

l . añadir una literal más general(ta1 como p(x,y,z)) o 2. instanciar una variable con otro variable o un término funcional más

general (tal como f(x,y,z).

Para cada hipótesis Hi más especifica asegurarse de Hi 2 IH (B,E+) y B A H A E- I+ O.

Búsqueda específica a general. Recorre la subsunción lattice desde H, = IH(B,E+) desarrollando cada una de las siguientes

l . eliminar una literal o 2. reemplazar un término por una variable.

Para cada hipótesis Hi más general, asegurarse de B A H A E- I+ O.

4.6 Valores extremos

Considerar los valores de I(B A H,IB A E) para las dos cláusulas de inicio de la sección previa.

4.6.1 H, = O

Este caso proporciona lo siguiente

Como Hi es elaborada más específica en la búsqueda I(B A Hi)

4.6.2 H, = I,(B,E+)

Este caso proporciona lo siguiente

I(B A H,) tiene un valor máximo

Como Hi es elaborada más general en la búsqueda I(B A Hi)

f \I 1 1 Q - P A HJI 1

I IE-l I ( )

Y log2 I I decrementará en forma monótona, mientras

4.7 A* con estimador perfecto

De la sección previa, es claro que ambas búsquedas general a específico y específico a general, involucran decisiones de intercambio. Buscar la subsunción lattice es un problema de recorrido en un grafo. Es claro que cuando tal búsqueda involucra un alto grado de no determinación puede ser muy caro debido al backtracking.

Para evitar el backtracking los algoritmos en IA frecuentemente emplean un "descenso con pendiente'' aproximando la búsqueda. Para la búsqueda general a específico o específico a general esto involucraría elegir la hipótesis revisada la cual minimiza I(B A HilB A E) para cada punto seleccionado Con el algoritmo A* ha sido probado que el descenso sigue la ruta mínima, proporcionando un estimador perfecto para la distancia en la búsqueda del objetivo. A* trabaja minimizando el recorrido en el grafo donde cada nuevo nodo encontrado es etiquetado por una función que tiene la forma

f = g + h

donde g es la distancia desde el inicio de la búsqueda y h es la distancia al objetivo.

4.8 Arbol de búsqueda

La Figura 4.1 ilustra una búsqueda A* empleando un estimador perfecto. La búsqueda ilustrada en la Figura 4.1 es isótona. Esto significa que el valor de f permanece constante durante la búsqueda. Un ejemplo de ello es la búsqueda en un laberinto encerrado y oscuro el cual tiene una fuerte fuente de luz a la salida y ligeramente reflejada en las paredes.

La búsqueda del camino mínimo puede ser llevado a cabo siempre que se elija el camino con la máxima iluminación. En este caso h sería la función de iluminación basada en la ley del ángulo inverso.

5=0+5 I L + Y 6 = 2 + 4 5=1+4 7 = 2 + 5

L L + Y 7 = 3 + 4 5 = 3 + 2 6 = 3 + 3

IL + Y 7 = 4 + 3 5 = 4 + 1 8 = 4 + 4

IL + Y 6 = 5 + l 5=5+0 7 = 5 + 2

Figura 4.1 : Búsqueda A* con estimador perfecto. Cada nodo es etiquetado con valores de f = g + h.

4.9 A* en H,

La figura 4.2 ilustra el uso de una A* estimador h para buscar HI. En este caso una ruta es una secuencia

de la hipótesis tal que

H, >HI > ... > H, (Búsqueda general a específico) O

H, <HI < ... < H, (Búsqueda específica a general)

En la figura 4.2 Hi es una hipótesis inmediata dentro del espacio de búsqueda. Suponer que el conocimiento previo tiene información Solomonoff que satisface o(B). La descripción mínima del conocimiento previo y ejemplos, B A E, tiene información que satisface o(B A E). La información que satisface el conocimiento previo con la hipótesis HI es o(B A Hi). Por lo tanto

f= o(B A E) - o(B) g = a(B A Hi) - o(B) h = o(B A E) - o(B A Hi)

0 """""""" 0 """"""" O o@) o(B A Hi) o(B A E)

Figura 4.2 Función Solomonoff o como estimador en la búsqueda A*.

4.1 O Estimadores Solomonoff

Sea Ei = (E:, E,-) ET = E' n Q+(B A Hi) Ei- = E- n Q-(B A Hi)

Entonces g es como sigue g= I(B A HiIEi)

Los errores de omisión y comisión para Hi son definidos como sigue

Omisión, = E+ - Eif (los que son y no están) Comisión, E¡' = E' - Ei- (los que no son y están)

h es la información resultante en E aun no considerada por Hi. Por lo tanto h es la información que satisface a los errores de Hi, la cual es

h = I(&:) + I(&¡-)

Notar que la información Solomonoff que mide 0 es incalculable. Por lo tanto las funciones para g y h pueden ser mejores aproximaciones. Una búsqueda pÓr descenso usa estas funciones para mejorar la aproximación de la búsqueda óptima.

CAPITULO 5

Hipótesis en Hz

5.1 Introducción

En el capitulo anterior se discutió como una búsqueda con un estimador Solomonoff ideal de el contenido de la información con errores puede ser usado para buscar el espacio de hipótesis que contiene cláusulas, sin usar backtracking.

Todo esto fue limitado a H,. En este capitulo se hará una extensión a H2. En particular se demostrará que cuando los ejemplos tienen cláusulas arbitrarias los elementos de H2 proporcionan un método de implicar orden antes que la subsunción ordenada. H2 también contiene hipótesis con símbolos de predicados ajenos a la base de Herbrand de los ejemplos y el conocimiento previo. En la filosofia de las ciencias, tales predicados "inventados" son conocidos como "términos teóricos". El modelo de tales predicados puede no ser evaluado directamente en terminos de el lenguaje "observado" de los ejemplos.

Sin embargo es posible evaluar teorías que contienen términos teóricos usando el análisis visto en el capitulo l . Más adelante se hablará de un conjunto desordenado de predicados y un lattice de utilidad será impuesto a esos nuevos predicados. Este ordena las clases de equivalencia de los predicados inventados. Las hipótesis hacen uso de esos predicados que son ordenados de acuerdo a su utilidad.

En la sección 2.5 -(I,(B,E+)) fue definido como la conjunción de todas las literales básicas vinculadas por B A -E+. En el teorema 2.6 se mostró que para toda hipótesis H (que contiene una o más cláusulas)

H -+ I,(B,E+).

L o que sigue es una consecuencia directa de el teorema 2.6.

Observación 5.1 H = C A D esta en H,+(B,E+) si y solo si

C A D -+ I,(B;E+) o alternativamente

C A D I= I,(B,E+)

Considerando primero el elemento más especifico de H;(B,E+). El conjunto de hipótesis más especificas en H2 es denotado por 12(B,E+) y definido como sigue:

Definición 5.2 Si B es una conjunción de cláusulas, E+ es un conjunto de cláusulas fundamentales, C y D son cláusulas finitas y H = C A D para algún par de cláusulas finitas tales que B A H (= E+. H es un elemento de el conjunto I,(B,E+) si y solo si no hay un par de cláusulas C' y D' y la hipótesis H = C' A D' tal que H' I= I,(B,E+), H' f H y C 2 C' y D 2 D'.

La siguiente observación afirma la relación entre H2(B,E+) y 12(B,E+).

Observación 5.3 H = C A D esta en H2+(B,E+) si y solo si hay un H'= C' A D' en I,(B,E+) tal que C 2 C' y D 2 D'. Posteriormente el subconjunto básico de 12(B,E+) es definido.

Definición 5.4 H esta en I',(B,E+) si y solo si H esta en 12(B,E+) y H es básico (no contiene variables).

Claramente I',(B,E+) 12(B,E+).

5.3 Lema de subsunción

Un orden para explorar m& a fondo las propiedades de los elementos dentro de I',(B,E') es necesario para hacer uso del lema de Subsunción el cual relaciona a la resolución y la implicación. Primero las tautologías son definidas.

Definición 5.5 Una cláusula C es una tautología si y solo si C E m. Observación 5.6 La cláusula C v 1 v 1 1 es una tautología.

Ahora la resolución básica.

Definición 5.7 Si C y D son cláusulas básicas(conjunto de literales que no contienen variables), y C y D contienen un par complementario de literales 1 y -1 respectivamente y

R = ( C - {I} U (D - {-I})

y R no es una tautología, entonces R es una resolución de C y D. De otra manera C y D no tienen resolvente.

La resolución lineal Closure se define a continuación.

Definición 5.8 Si T es un conjunto de cláusulas. La resolvente lineal de T se define recursivamente así:

C(T) = T <"(T) = {R:C E <""(T), D E T, R resolvente de C y D> la Closure <*(T) es <'(TI u <,(T) u ...

Lema 5.9 (Lema de Subsunción). Si T es un conjunto de cláusulas fundamentales y C es una cláusula fundamental. T I= C si y solo si cualquier C es una tautología o existe D en <*(T) tal que D 5 C.

Esto puede aplicarse para caracterizar los elementos en I',(B,E+).

Lema 5.1 O Si B es una conjunción de cláusulas, E+ es una cláusula para la cual B I+ E' y H es el par de cláusulas C A D. H esta en I',(B,E+) si y solamente si IH(B,E+) E G2(H).

Prueba Parte Solamente si. Se asuma H en I',(B;E+) y I,(B,E+) e L2(H) . De el lema de subsunción, H I= I,(B,E+) se sigue que cualquier I,(B,E+) es una tautología o <*(H) contiene una cláusula D tal que D C. Se Supone I,(B,E+) es una tautología. Pero B A I,(B,E+) (= E', y así B I= E+. Esto contradice la suposición.

Por lo tanto t;*(H) contiene una cláusula D tal que D c I,(B,E+). Pero I,(B,E+) P L2(H), asi cualquier D en <,(H) y D c I,(B,E+) o D en <'(H) donde i en { 1,3,4, ...}. Pero en cualquier nivel de <* H D no puede ser que D c I,(B,E+) luego podría existir un H' más especifico y corresponderle D' para el cual D' E I,(B,E+). Así I,(B.E+) esta en <'(H) para algún i en { 1,3,4, ...}. Suponemos que I,(B,E+) esta en <'(H). Entonces de la definición 5.8 H = C A I,(B,E+). Claramente H )= I,(B,E+).

Sin embargo Suponemos que C es una cláusula finita. Entonces esta es otra cláusula C' = C v 1 y la hipótesis H = C' A I,(B,E+) para la cual C > C'. Por lo tanto por la definición 5.2 ninguna H puede estar en I',(B,E+). En cuyo caso I,(B,E+) debe estar en Gi(H), para algún i en {3,4, ...}. Un orden para tener resolventes debe ser que H tiene la forma (C v I) A(D v -I). En este caso (C v D) E C2(H). A menos que c3(H) sea vacío C y D deben contener literales complementarias m y -m respectivamente, pero entonces C v D es una tautología y por lo tanto no está en G2(H). Si se considera <'(H) vacío para i en {2,3,4, ...I lo cual contradice la suposición y completa la parte Solamente si.

Parte Si. Se Supone I,(B,E+) E G2(H) y H e I',(B,E+). Después I,(B,E+) E G2(H) se sigue del lema de subsunción que H I= ",(BYE+). Para un H' más específico que H, las cláusulas en G2(H) serán más específicas que Y2(B,E+). También se sigue el mismo argumento como en la parte Solamente si mostrando que I,(B.E+) no puede estar en Li(H') para i en { 1,3,4, ...}. Esto contradice la suposición y se completa la demostración.

5.4 Y,(B,E+)

Es ahora posible dar una caracterización completa de II2(B,E+).

Teorema 5.1 1 Si H es (I,(B,E+) v I> A (I,(B,E+)v I> y B I+ E+. H esta en I',(B,E+) si y solamente si 1 y -I son literales básicas ninguna encontrada en I,(B,E+).

Corolario 5.12 Para cualquier H en I',(B,E+), H 3 I,(B,E+).

Prueba. De acuerdo al teorema 5.1 1 H = (I,(B,E+) v I> A (I,(B,E+) v 10. Es necesario para probar H )= I,(B,E+) y I,(B,E+) I= H. H )= I,(B,E+) luego H esta en (BYE+) y I,(B,E+) I= H después I ,(B,E+) se incluyen ambas (I,(B,E+) v I> y (I,(B,E+) v -I>. Así se completa la prueba.

5.5 I',(B,E+) y Self-Recursion

En esta sección a E+ se le permite contener cláusulas arbitrarias simples. Esto no afecta la validez del tratamiento lógico, después ninguna prueba hace uso de el hecho de que E+ contiene solo hechos fundamentales.

Recordando el ejemplo en la prueba de el teorema 2.14 que hace uso de las cláusulas

La segunda cláusula puede ser skolemizada y tratada como un ejemplo e" y la primera como una hipótesis H. De acuerdo al teorema 2.14 H no incluye a IH(Bye'+). Sin embargo el siguiente teorema muestra que H incluye un par de cláusulas en Y2(B,e'+).

Teorema 5.13. Si e+ es una cláusula y e" es e+es, donde 8, es una sustitución skolem cuyo dominio son las variables de e+. Existe una cláusula H la cual se resuelve en términos de ella misma y es e+ si y solo si existen C A D en Y2(B,e'+) para el cual H I lgg(C,D).

Prueba. Por construcción. Si no existe H entonces no hay nada que probar. De otro modo asumimos que existe H. Para H en Self-recursión H debe contener dos literales 1 y -m con los mismos predicados simbólicos y signos opuestos.

Si H' es H con variables renombradas. Ahora si H = 1 v -m v Iresuelta con H = 1' v Tm' v ? con substitución 8 para dar e+= (I v -m' v I v f ) 8 entonces 8 es la mgu de -m y 1'. Así me = 1'8. Pero de acuerdo al teorema 5.1 1 Y2(m,e'+) contiene C = e" v 1'08, y D = e" v -mees. De otro modo C = ( l v I ' v - m ' v I v f ) 0 8 , y D = ( I v - m ' v -mvIv?)88, .EncuyocasoH'2C y H 2 D . Pero después H 2 H' se sigue que H 2 C y H 2 D en cuyo caso H 2 lgg(C,D). Esto completa la prueba.

Ejemplo 5.14 Siguiendo la construcción de la prueba del teorema 5.13 se tiene

H = nat(s(x)) t nat(x)

H' = nat(s(y)) t nat (y)

C = nat(s(s($Y))) v nat(s($Y)) nat($Y)

D = nat(s(s($Y))) t nat($Y) v nat(s($Y))

H 2 lgg(C,D) = nat(s(s($Y))) v nat(s(u)) t nat(u) A nat($Y)

5.6 Invención de predicados

Teorema 5.1 1 Se afirma que las cláusulas en I',(B,E+) contienen literales no encontradas en I,(B,E+). En la sección anterior la hipótesis Self-recursiva fue tratada para introducir tales literales a partir de la base de Herbrand B(B A E'). En este caso de acuerdo al teorema 5.1 1 los átomos parten de

M(B A -E+) - B(B A -E+)

que es el conjunto de átomos de la base de Herbrand no derivables de B A E'. El teorema 5.1 1 también aplica los átomos fuera de la base de Herbrand. Para cubrir esto la base de Herbrand aumentada se define a continuación.

Definición 5.15 La base de Herbrand aumentada de la teoría T, B'(T), consiste de todos los átomos básicos los cuales pueden ser construidos a partir de P(T) U P' y F(T) donde P(T) es el conjunto de predicados simbólicos en T, P' es un conjunto denumerable adicional de predicados simbólicos y F(T) es el conjunto de funciones simbólicas en T.

Cuando la hipótesis contiene predicados simbólicos fuera de la base de Herbrand de el conocimiento previo y los ejemplos los predicados adicionales se dice que son inventados. Los siguientes ejemplos hacen uso de I,(B,E+) para introducir el predicado inventado "parent" cuando el ejemplo y el conocimiento previo contienen solo los predicados "grandfather" y "father".

Ejemplo 5.16 Si

f

I B = 1 father(Henry,Jane) t

E" = grandfather(Henry,John) t

IH(B,Ef) = grandfather(Henry,John) t father(Henry,Jane)

de acuerdo al teorema 5.1 1 H esta en I',(B,E+)

f grandfather(Henry,John) t father(Henry,Jane) A p,(Jane,John)

I p,(Jane,John) v grandfather(Henry,John) t father(Henry,Jane) H = {

esto se incluye por la hipótesis de H

f grandfather(x,y) t father(x,z) A p,(z,y)

\ p,(Jane,John) t H' = {

Nótese que p1 actúa de la misma manera que el predicado "parent".

5.7 Ordenamiento utilitario

Después de que el número de nuevos predicados que podrían ser introducidos es casí ilimitado es necesario poner un orden en ellos. Claramente dos predicados que definen la misma relación , pero tienen diferente orden en el argumento podrían ser equivalentes dentro de tal ordenamiento. El objetivo es minimizar I(B A H I B A E), el predicado inventado el cual cumple con los propósitos elegidos. Primero se da la definición de una re-escritura canónica.

Qefinición 5.17 La cláusula p(xI, ..., X,,,) t qn es una re-escritura canónica si y solamente si xl,..,x,,, son variables distintas, qn es un átomo y (xI,..x,} es un conjunto de variables de qn.

El ordenamiento utilitario I, es definido a continuación.

Definición 5.18 (Ordenamiento utilitario . Si B es una conjunción de cláusulas las cuales no contienen los predicados simbólicos pm y 9". Si (pmdef) es un conjunto de cláusulas la cuales definen predicados simbólicos pm, sea (qndef) lo mismo pero para 4". pm I, q" o pm tiene menor utilidad que q" en B si y solo si existe un re-escrito canónico R tal que B A (qndef) A R I= M(B A pmdef).

Ejemplo 5.19 male' SB son y un escrito canónico 2

R = male(x) t son(x,y) tal que con B vacío, I

El número natural lessthan2 tiene menor utilidad que el número natural plus3 con

R = lessthan(x,z) t plus(x,y,z)

harrychild' tiene menor utilidad que child2 con

R = harryschild(x) t child(x,Harry).

De estos ejemplos se puede ver que la menor utilidad puede producirse por cambiar los predicados simbólicos y decrementar los argumentos, como es el caso con male 5, son y lessthan S, plus . 1 2 2 3

5.8 Orden Parcial y equivalencias

Esto muestra que 5, es un orden parcial sobre los predicados.

Teorema 5.20 5, es un orden parcial.

Esto es 5, es transitivo reflexivo y asimétrico.

La equivalencia es definida de la siguiente forma:

Definición 5.21 pm -, q" si y solo si pm IB q" y q" IB pm

Ejemplo 5.22 child2 =B parent2 usando el re-escrito canónico child(x,y) t parent(y,x) y parent(x,y) t child(y,x).

Definición 5.23 La clase de equivalencia de p" relativas a B es

5.9 Utilidad es un lattice

Teorema 5.24 Si pm es un predicado simbólico en la conjunción de cláusulas B. El conjunto de predicados q", nlm, tal que se puede construir a partir de los subconjuntos de los argumentos de p"' formando un lattice ordenado por I,. El elemento mínimo I, en el lattice es qo y el elemento máximo es el predicado p"'.

5.1 O Refinamiento de cláusulas relativas

En la sección anterior se vio que el conjunto de predicados que tienen menor utilidad que un predicado dado p"' forman un lattice. Esta sección define un orden parcial sobre las cláusulas construidas a partir de predicados elegidos de un universo de predicados.

Definición 5.25 (Refinamiento de cláusulas relativas). Si P es un conjunto denumerable de predicados simbólicos, si R es el conjunto de re-escritos canónicos {R:p"' E P , q" E P(B), pm I, qn usando R). Si C y D son 2 cláusulas construidas usando solo predicados simbólicos de P. C es más fino que D con respecto a P o C lp D, si y solamente si R A C I= D.

Ejemplo 5.26 Si C = uncle(u,v) t sibling(u,w) A child(v,w) A male(u). Si D=uncle(u,v) t sibling(u,w) A son(u,x). Si P = {malel,son2, ...}, entonces R es {(male(x) t son(x,y)), ...} y R A C I= D. De otro modo C es más fino que D.

Definición 5.27 C =p D si y solo si C Ip D y D S,, C.

Definición 5.28 La clase de equivalencia de C relativa a P es lClp = {D D -p C}

Lema 5.29 Orden parcial fino. Dado un universo P de Predicados simbólicos finos, estos forman un orden parcial sobre las cláusulas construidas a partir de P.

Prueba. Si B son todos los predicados definidos en P. El teorema sigue el hecho de que la subsunción relativa a B forma un orden parcial.

Teorema 5.30 (Unico elemento menos básico). Dada la base de Herbrand aumentada B'(B A E+) hay un par de cláusulas con un mínimo de refinamientos

en I',(B,E+) la cual es la única relativa a las equivalencias con un mínimo de refinamiento.

Prueba. 1 tiene un predicado simbólico arbitrario de P y tiene como argumento todos los términos en el universo de Herbrand de B A E'.

Apéndice A Introducción de programas en Prolog con Markus

El sistema MARKUS, fue diseñado como un intérprete de experimentos en diferentes dominios de la vida real. El sistema usa como base el paradigma "cubrir". Con este paradigma, el desarrollo de cláusulas para programas simples es realizado por búsqueda profunda iterativa de los grafos refinados generados óptimamente.

El sistema llamado MARKUS, es una mejora del Sistema Inferencia1 de modelos de Shapiro (MIS), el cual representá un paso significativo en el aprendizaje maquinal y particularmente en inducción de programas lógicos, aunque sistemas mas recientes llevan a cabo comparables o mejores resultados en el área llamada programación lógica inductiva (ILP). Aunque la implementación original MIS es enteramente ineficiente para la solución de problemas no triviales la idea fundamental tiene el potencial de ser competitivo con las presentes metodologías y sistemas en ILP.

SISTEMA INFERENCIAL (MIS)

El modelo MIS infiere programas para ejemplos y contraejemplos de algún comportamiento. Ejemplos positivos y negativos para un concepto fuente de comportamiento. El principal paso consiste en la búsqueda de una nueva cláusula (cláusula de prolog) para el predicado fuente, tal que cubra algunos ejemplos positivos no cubiertos aun y ningún ejemplo negativo. Cuando buscando una cláusula correcta, un refinamiento de grafo es usado para generar posibles cláusulas candidatas. MIS empieza desde la cláusula mas general para el predicado fuente y desarrolla por nivel derivaciones mas especificas hasta encontrar la cláusula correcta. Hay en MIS tres principales problemas en la realización del refinamiento de grafos.

l . Generación de nodos duplicados e el refinamiento del grafo. 2. No hay control en el espacio de búsquedas. 3. Uso de búsqueda por nivel.

MARKUS

El algoritmo básico MARKUS contempla:

0 Definiciones de predicados del conocimiento previo que son llamados por el concepto fuente. Hechos positivos (Pos) y negativos (Neg) de un concepto fuente de comportamiento.

0 Función cubre( P, Hechos ) el cual regresa un conjunto de hechos de Hechos los cuales son verdaderos en P ( P es un conjunto de cláusulas en Prolog).

La cláusula C en P es incorrecta si es responsable de inconsistencia, es decir, si cubre( P, Neg. ) z 0 y cubre (P-{C},Neg. ) = 0 . Cláusula C en P es redundante si no afecta el cubrimiento de P, es decir si cubre (P, Pos) = cubre ( P-{C},Pos ).

En MIS, las cláusulas redundantes no son eliminadas las cuales resultan en programas fuentes menos entendibles y más grandes. Además de causar, un gran espacio de búsqueda innecesario.

El sistema MARKUS se extiende hacia varias direcciones

0 Generación optima del, grafo refinado. 0 Control del espacio de búsqueda con varios parámetros. 0 Uso de búsqueda profunda iterativa. 0 Uso de todos los hechos positivos y negativos. 0 Eliminación de cláusulas incorrectas y redundantes.

Uso de negación.

Apéndice B

HISTORIA DE PROLOG

Prolog significa "PROgramming in LOGic" y es un lenguaje de programación de computadoras que fue inventado alrededor de 1970 por Alain Colmeraver y sus colegas de la Universidad de Marsella. Rápidamente el Prolog se convirtió en el lenguaje principal para la Inteligencia Artificial (AI) en Europa, mientras que LISP (otro lenguaje de programación usado por los investigadores en AI) se usaba principalmente por los programadores de los Estados Unidos. A finales de los años 1970 comenzaron a aparecer versiones de Prolog para microcomputadoras. Uno de los compiladores de Prolog más populares para microcomputadoras fue el micro-Prolog y se dedicaron muchos libros de Prolog a él.

No existió mucho interés por el Prolog hasta que los científicos lanzaron su famoso proyecto de la quinta generación con el objetivo de diseñar nuevas computadoras y software, los cuales no tendrían rivales en los años 1990 y posteriores. No fue una simple coincidencia que eligieran el Prolog como lenguaje en que basar su trabajo. De repente la gente comenzó a mirar de otra forma al Prolog y sus posibilidades.

INTRODUCCION A PROLOG

Prolog ha ganado rápidamente popularidad por todo el mundo. Desde sus inicios, Prolog ha sido elegido por muchos programadores para aplicaciones de computación simbólica incluyendo:

0 bases de datos relacionales 0 matemática lógica 0 solución a problemas abstractos 0 entendimiento de lenguaje natural 0 solución a ecuaciones simbólicas 0 muchas áreas de inteligencia artificial.

Conocer el Prolog es importante para todo el que esté relacionado con las computadoras, debido a que el lenguaje se ha convertido en el principal entorno de programación para AI, una de las principales áreas de aplicación de las computadoras que está emergiendo.

Prolog es un lenguaje de programación hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Más exactamente el dominio es un conjunto de objetos y el conocimiento se representa por un conjunto de relaciones que describen las propiedades de los objetos y sus interrelaciones.

Un conjunto de reglas que describa estas propiedades y estas relaciones es un programa Prolog.

Prolog está diseñado para manejar "problemas lógicos" (es decir problemas en los que se necesita tomar decisiones de una forma ordenada). Prolog intenta hacer que la computadora "razone" la forma de encontrar una solución.

Prolog se basa en manipulaciones lógicas. Como lenguaje de computadora no es Único a este respecto: hay varios lenguajes en el campo general de la "programación lógica". Tales lenguajes trabajan con lógica proposicional, también conocida como lógica de predicados o cálculo proposicional. Por ejemplo, las siguientes sentencias son hechos:

La gente con zapatos de baseball juegan al baseball. La persona #1 tiene zapatos de baseball.

Lo que puede inferirse de estos hechos es que la persona #1 juega al baseball. Prolog hace que la computadora maneje la parte de inferir. Así dado, el problema puede parecer trivial, pero si se tuviera una base de datos técnica almacenada con miles de hechos y reglas, no sería práctico entregar esa lista a un humano y pedirle una rápida respuesta.

Prolog es un lenguaje de programación para la computación simbólica. Esta enfocado a resolver problemas que involucran objetos y relaciones entre objetos. Un ejemplo es el hecho de que Tom es padre de Bob y esto en prolog se escribe como:

padre(tom,bob).

Padre es el nombre de la relación, tom y bob son sus argumentos.

Nombres tales como tom y bob se escriben con letra minúscula. El siguiente es un programa en prolog:

padre(pam,bob). padre(tom,bob). padre(tom,liz). padre(bob,ann). padre(bob,pat). padre(pat,jim).

Este programa consiste de seis cláusulas. Cada cláusula declara un hecho sobre la relación padre.

Cuando este programa es interpretado por prolog se pueden hacer algunas preguntas sobre la relación padre. Por ejemplo, si Bob es padre de Pat . Esta pregunta puede hacerse tecleando en la terminal:

?- padre(bob,pat).

una vez que prolog encuentra que es un hecho acertado contesta "si". Algunos hechos no se llevan a cabo, y al preguntar al sistema este contesta con un "no".

Podemos preguntar al sistema cuáles son todas las soluciones posibles expresando la pregunta , como:

?- padre(X,Y).

y prolog encuentra todas las parejas posibles padre-hijo una después de otra. Los argumentos X,Y son s variables y se escriben con letras mayúsculas.

Algunos puntos importantes de prolog son:

+ Es fácil definir una relación en prolog, indicando las n-tuplas de objetos que satisfacen la relación. + El usuario puede preguntar al sistema de prolog sobre las relaciones definidas en el programa. + Un programa en prolog consiste de cláusulas, cada cláusula termina con un punto. + Los argumentos de las relaciones pueden ser: objetos o constantes, o objetos generales tales como X

y Y. objetos de el primer tipo (tom, ann) son llamados átomos. Objetos del segundo tipo (X,Y) son llamados variables.

+ Una pregunta al sistema consiste de uno o más objetivos. La palabra ''objetivo" es usada porque prolog hace preguntas como objetivos que serán satisfechos .

+ Una respuesta a una pregunta puede ser positiva o negativa, dependiendo si el objetivo es satisfecho o no. En caso de que la respuesta es positiva es que el objetivo fue satisfecho y el objetivo sucede. En caso contrario el objetivo no fue satisfecho y falla.

+ Si varias respuestas satisfacen una pregunta, entonces prolog encuentra tantas como deseé el usuario.

En prolog las relaciones son unarias, binarias o constan de n-tuplas. Una relación binaria en prolog esta definida por un par de objetos:

Padre(tom,bob).

y una relación unaria consta de un solo objeto:

femenino(1iz).

En prolog también hay reglas, que son diferentes a los hechos, ya que un hecho siempre es verdadero, sin embargo una regla especifica algo que puede ser verdadero si alguna condición se satisface. Esto es, una regla tiene una condición y una conclusión.

La conclusión es la cabeza de la cláusula y la condición es el cuerpo de la cláusula . Por ejemplo:

hijo(Y,X):- padre(X,Y). cabeza cuerpo

El cuerpo es una lista de objetivos separados por comas. Una coma entre dos condiciones indica l a conjunción de las condiciones, indicando que ambas condiciones tienen que ser verdaderas.

madre(X,Y):- padre(X,Y), femenino(X).

Es importante recalcar lo siguiente:

0 Un programa en prolog va creciendo conforme se adicionan más claúsulas. Las cláusulas en prolog son de tres tipos: hechos, reglas y preguntas.

0 Los hechos declaran algo que siempre es verdadero. 0 Las reglas declaran algo que es verdadero si se cumple una condición. 0 Por medio de preguntas el usuario puede preguntar al programa que cosas son verdaderas.

Los hechos y las cláusulas tienen el cuerpo vacío, las preguntas solamente tienen el cuerpo y las

0 Durante la computación una variable puede ser substituida por otro objeto. Esto es, una variable es reglas tienen tanto cabeza como cuerpo.

instantánea.

Se emplea la palabra recursividad cuando definimos algo que puede definirse en términos de sí mismo y que aun no ha sido completamente definido. Lógicamente esto debe de ser correcto y entendible. La programación recursiva es uno de los principios fundamentales de la programación en prolog. No es posible resolver tareas de complejidad significante en prolog sin el uso de la recursividad.

Un ejemplo es la relación predecesor, la cual está definida en términos de la relación padre, la cuál consiste de dos reglas: una cuando es un predecesor directo y una para un predecesor indirecto. El programa recursivo es el siguiente:

predecesor(X,Z):- padre(X,Z).

predecesor(X,Z):- paWX,Y), predecesor(Y,Z).

Una pregunta a prolog es una secuencia de uno o más objetivos. Para contestar una pregunta prolog debe de satisfacer todos los objetivos. Para satisfacer un objetivo hay que demostrar que es verdadero verificando que las relaciones en el programa son verdaderas. Para satisfacer un objetivo hay que demostrar que estos siguen la lógica de los hechos y las reglas en el programa. Si la pregunta contiene variables, prolog debe encontrar cuáles son los objetos particulares para los cuales los objetivos se cumplen. Una instancia particular de objetos es desplegada a el usuario. Si prolog no puede demostrar para alguna instancia de variables que los objetivos siguen la lógica del programa, entonces prolog contesta con un "no" a la pregunta.

La forma en que prolog busca soluciones es por medio de bakctrack, esto es, forma un árbol donde los nodos corresponden a los objetivos, o la lista de objetivos que deben de satisfacerse. Los arcos entre los nodos corresponden a la evaluación de las cláusulas del programa que transforman los objetivos de un nodo dentro de los objetivos de otro nodo, termina cuando los objetivos son satisfechos, cuando un camino es encontrado desde la raíz del nodo hasta un nodo hoja etiquetado con un "si". Una hoja es etiquetada con un "si" si esta es un hecho simple. La ejecución de prolog es la búsqueda de tales caminos. Durante la búsqueda prolog puede entrar a un camino sin éxito. Cuando prolog descubre que un camino falla automáticamente retrocede al nodo previo e intenta aplicar una cláusula alternativa a aquel nodo.

En prolog hay 2 niveles de entendimiento de un programa llamados

0 Significado declarativo 0 Significado procesal.

El significado declarativo esta interesado solamente en las relaciones definidas en el programa , así determina cuales pueden ser las salidas de el programa. El significado procesal determina como se obtienen esas salidas; esto es, como son las relaciones actualmente evaluadas por el sistema. Por lo tanto el significado declarativo de un programa es más fácil de entender que el significado procesal.

Apéndice c Códigos fuente de algunos programas desarrollados en Prolog

/* Problema de la mochila PABLO IGNACIO CASTILLEJO GARCIA El formato es

mochila(Lista de articulos, Capacidad de la mochila,

Solucion). *I

mochila([l, -, [I). mochila(ListaArts, Capacidad, ListaSo1ucion):-

posiblesSubcs(ListaArts, ListaPosibles), solucionOptima(Capacidad, ListaPosibles, [I, ListaSolucion).

solucionOptimaC, [I, L, Soh):-

solucionOptima(Cap, [Posible 1 1 Demas], UnaSoln, So1ucion):- conc(L, [], Soln).

mejor(Posible1, UnaSoln, Cap), solucionOptima(Cap, Demas, Posible1 , Solucion); solucionOptima(Cap, Demas, UnaSoln, Solucion).

mejor(S1, S2, C):- pesosYvalores(S 1, S2, P 1, P2, V 1, V2), P1 =< c , P2 =< c , v1>= v2 .

pesosYvalores(L1, L2, P1, P2, VI, V2):- peso(L 1, P l), peso(L2, P2), valor(L 1, V l), valor(L2, V2).

valor([], O). valor([ ANIP 1 Demas], Val):-

valor(Demas, Vl), Val is Vl+V.

peso([l, 0). peso([ ANIP 1 Otros], Peso):-

peso(Otros, Pl), Peso is PI+P.

subconj([I, [I). subconj([X I Otros], [X(Subc]):-

subconj(Otros, Subc). subconj([X I Otros], Subc):-

subconj(Otros, Subc).

posiblesSubcs(L, TodosSubc):-

bagof(Subc, subconj(L, Subc), TodosSubc).

/* Problema de las ocho reinas */

reinas(Tabler0, N) :- reinas(Tabler0, [I, O, N).

reinas(Tabler0, Tablero, N, N), reinas(Tabler0, Acumulado, I, N) :-

elige()(, N), J is I+], verifica((X,J), Acumulado), reinas(Tabler0, [(X, J) I Acumulado], J, N).

elige(N, N). elige()(, N) :- N1 is N-1,

NI > O , elige()<, Nl).

verifica((X, Y), [I). verifica((X,Y), [(XI, Y 1) I Resto]) :-

(X == x 1 ; W is abs(X - Xl), Z is abs(Y - Y I), w == Z),

fail. ., I

verifica(()(, Y), [(X I , Y 1) 1 Resto]) :- verifica((X, Y) , Resto).

/* Elección de combinaciones de un conjuntos de m elementos con grupos de n elementos */

elige-mn(L, O, N, [I). elige-mn(L, M, O, [I). elige-mn(L, 1, N, L). elige-mn(L, Y, Y , L). elige-mn([X I Xs], M, N, E) :- elige-mn(Xs, M-1, N, LI),

elige-mn(X, 1, N- 1, L2), conc(L1, L2, E).

sub-disj([Prim)Resto], [PrimJSubcl], Subc2):- sub-disj(Resto, Subc 1, Subc2).

sub-disj([PrimlResto], Subcl, [PrimlSubc2]):- sub-disj(Resto, Subcl, Subc2).

BIBLIOGRAFIA

O ‘Keefe, Richard A.; The Craft of Prolog; The MIT Press; Cambridge, Mass.; 1990.

Clocksin, W.F., Mellish, C. S.; Programming in Prolog; 3ra. ed; Springer-Verlag; Nueva York, 1987.

Rowe, Neil C.; Artifitial Intelligence Through Prolog; Prentice-Hall; New Jersey, 1988.

e Muggleton, Stephen; Logic Programming, Part 11: Inductive Logic Programming; 1992.

Bratko, Ivan. Prolog Programming for Artifitial Intelligence; Adison-Wesley; Wokingham, England; 1986.

Francis Giannesini, Henry Kanoui, Robert Pasero, Michel Van Caneghem, Prolog, Addison-Weslwy Iberoamericana, E.U.A.., 1989.