Inferencia en Lógica de Primer Orden

37
INFERENCIA EN LÓGICA DE PRIMER ORDEN I.A., RUSSEL Y NORVIG, CAPÍTULO 9 PÁGINAS 309-362(337-390 PDF)

Transcript of Inferencia en Lógica de Primer Orden

Page 1: Inferencia en Lógica de Primer Orden

INFERENCIA EN LÓGICA DE PRIMER ORDEN

I.A., RUSSEL Y NORVIG, CAPÍTULO 9

PÁGINAS 309-362(337-390 PDF)

Page 2: Inferencia en Lógica de Primer Orden

Lógica proposicional vs. Lógica de primer orden

La inferencia de primer orden se puede hacer convirtiendo la

base de conocimiento a lógica proposicional y utilizando la

inferencia proposicional.

Comenzamos con algunas reglas de inferencia sencillas que se

pueden aplicar a las sentencias con cuantificadores para

obtener sus sentencias equivalentes, sin cuantificar.

Page 3: Inferencia en Lógica de Primer Orden

Reglas de inferencia para cuantificadoresSuponga que nuestra base de conocimiento contiene el axioma popular que afirma que los reyes que son codiciosos también son malvados.

∀𝑥𝑅𝑒𝑦 𝑥 ^𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜(𝑥) → 𝑀𝑎𝑙𝑣𝑎𝑑𝑜(𝑥)

Se pueden inferir las siguientes sentencias:

Rey(Juan) ^ Codicioso(Juan) Malvado(Juan)

Rey(Ricardo) ^ Codicioso(Ricardo) Malvado(Ricardo)

Rey(Padre(Juan)) ^ Codicioso(Padre(Juan)) Malvado(Padre(Juan))

Page 4: Inferencia en Lógica de Primer Orden

Regla de la Especificación Universal (EU)La regla de la Especificación Universal (EU para abreviar) dice que podemos inferir cualquier sentencia obtenida por sustitución de la variable por un término base (un término sin variables)

Vamos a denotar el resultado de aplicar una sustitución Ɵ a una sentencia α mediante Sust (Ɵ , α). Entonces la regla se escribe:

∀v α______SUST({v/g}, α)

Reglas de inferencia para cuantificadores

Para cualquier variable v y término base g

Page 5: Inferencia en Lógica de Primer Orden

Regla de la Especificación Universal (EU)

Reglas de inferencia para cuantificadores

∀𝑥𝑅𝑒𝑦 𝑥 ^𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜(𝑥) → 𝑀𝑎𝑙𝑣𝑎𝑑𝑜(𝑥)

Rey(Juan) ^ Codicioso(Juan) Malvado(Juan)

Rey(Ricardo) ^ Codicioso(Ricardo) Malvado(Ricardo)

Rey(Padre(Juan)) ^ Codicioso(Padre(Juan)) Malvado(Padre(Juan))

{x/Juan},

{x/Ricardo},

{x/Padre(Juan)}

Page 6: Inferencia en Lógica de Primer Orden

Regla de la Especificación Existencial(EE)La correspondiente regla de Especificación Existencial para el cuantificador existencial es ligeramente más complicada. Para cualquier sentencia α, variable v, y símbolode constante k que no aparezca en ninguna otra parte de la base de conocimiento,

Ǝv α______SUST({v/k}, α)

Reglas de inferencia para cuantificadores

Para cualquier variable v y símbolo constante k

Page 7: Inferencia en Lógica de Primer Orden

Regla de la Especificación Existencial(EE)De la sentencia Ǝ𝑥 𝐶𝑜𝑟𝑜𝑛𝑎(𝑥) ^ 𝑆𝑜𝑏𝑟𝑒𝐶𝑎𝑏𝑒𝑧𝑎(𝑥, 𝐽𝑢𝑎𝑛)

Podemos inferir 𝐶𝑜𝑟𝑜𝑛𝑎(𝐶1) ^ 𝑆𝑜𝑏𝑟𝑒𝐶𝑎𝑏𝑒𝑧𝑎(𝐶1, 𝐽𝑢𝑎𝑛)

Mientras que 𝐶1 no aparezca en ningún otro sitio de la BC.

Básicamente, la sentencia existencial nos dice que hay algún objeto que satisface una condición, y el proceso de especificación tan sólo le da un nombre a dicho objeto (𝐶1).

Naturalmente, ese nombre no puede pertenecer a otro objeto previamente.

Reglas de inferencia para cuantificadores

Page 8: Inferencia en Lógica de Primer Orden

Regla de la Especificación Existencial(EE)Supongamos que descubrimos que hay un número que es

un poco mayor que 2,71828 y que satisface la ecuación 𝑑 𝑥𝑦

𝑑𝑦= 𝑥𝑦

para x.

Le podemos dar a dicho número un nombre, como 𝒆, pero sería un error darle el nombre de un objeto ya existente, como 𝝅.

En lógica, a este nuevo nombre se le denomina constante de Skolem*.

Reglas de inferencia para cuantificadores

*La Especificación Existencial es un caso especial del proceso más general llamado skolemización, que trataremos más adelante

Page 9: Inferencia en Lógica de Primer Orden

• La Especificación Universal se puede aplicar muchas veces para producir muchas

consecuencias diferentes, la Especificación Existencial sólo se puede aplicar una vez, y

entonces se puede descartar la sentencia cuantificada existencialmente.

• Por ejemplo:, una vez que hemos añadido la sentencia 𝑀𝑎𝑡𝑎(𝐴𝑠𝑒𝑠𝑖𝑛𝑜, 𝑉í𝑐𝑡𝑖𝑚𝑎), ya

no necesitamos más la sentencia Ǝ𝑥𝑀𝑎𝑡𝑎(𝑥, 𝑉í𝑐𝑡𝑖𝑚𝑎).

Regla de la Especificación Existencial(EE)

Reglas de inferencia para cuantificadores

Page 10: Inferencia en Lógica de Primer Orden

Reducción a la inferencia proposicional

Ya que podemos inferir sentencias no cuantificadas a partir de sentencias cuantificadas, podemos reducir la inferencia de primer orden a la inferencia proposicional.

Como una sentencia cuantificada existencialmente se puede sustituir por una especificación, una sentencia cuantificada existencialmente se puede sustituir por el conjunto de todas las especificaciones posibles.

Page 11: Inferencia en Lógica de Primer Orden

Reducción a la inferencia proposicional

Supongamos que nuestra base de conocimiento contiene tan sólo las sentencias:

∀𝑥 𝑅𝑒𝑦 𝑥 ^𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜 𝑥 => 𝑀𝑎𝑙𝑣𝑎𝑑𝑜 𝑥

𝑅𝑒𝑦 𝐽𝑢𝑎𝑛

𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜 𝐽𝑢𝑎𝑛

𝐻𝑒𝑟𝑚𝑎𝑛𝑜 𝑅𝑖𝑐𝑎𝑟𝑑𝑜, 𝐽𝑢𝑎𝑛

.

Page 12: Inferencia en Lógica de Primer Orden

Reducción a la inferencia proposicional

Entonces aplicamos la EU a la primera sentencia, utilizando todas las sustituciones de términos base posibles, tomadas del vocabulario de la base de conocimiento, en este caso {x/Juan} y {x/Ricardo}. Obtenemos:

𝑅𝑒𝑦(𝐽𝑢𝑎𝑛) ^ 𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜(𝐽𝑢𝑎𝑛) 𝑀𝑎𝑙𝑣𝑎𝑑𝑜(𝐽𝑢𝑎𝑛),

𝑅𝑒𝑦(𝑅𝑖𝑐𝑎𝑟𝑑𝑜) ^ 𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜(𝑅𝑖𝑐𝑎𝑟𝑑𝑜) 𝑀𝑎𝑙𝑣𝑎𝑑𝑜 (𝑅𝑖𝑐𝑎𝑟𝑑𝑜)Ahora, la BC es esencialmente proposicional, si vemos las sentencias atómicas base (𝑅𝑒𝑦(𝐽𝑢𝑎𝑛), 𝑐𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜(𝐽𝑢𝑎𝑛), etc.) como símbolos proposicionales.

Page 13: Inferencia en Lógica de Primer Orden

Una regla de inferencia de primer ordenSupongamos que en vez de Codicioso[Juan), sabemos que todo el mundo es codicioso: :

∀𝑦 𝐶𝑜𝑑𝑖𝑐𝑖𝑜𝑠𝑜 𝑦

Podemos concluir Malvado(Juan) por que sabemos que Juan es un rey y que Juan es codicioso al igual que todo el mundo.

Necesitamos encontrar una sustitución para las variables en la sentencia de implicación y las variables de las sentencias que se deben emparejar.

En este caso, aplicando la sustitución {x/Juan, y/Juan} a las premisas de implicación Rey(x) y codicioso(x) y a las sentencias de la BC Rey(Juan) y Codicioso(y) las hará idénticas.

De este modo podemos inferir la conclusión de una implicación

Page 14: Inferencia en Lógica de Primer Orden

Una regla de inferencia de primer orden

Este proceso de inferencia se puede plasmar mediante una única regla de inferencia a la que llamamos MODUS PONENS GENERALIZADO*.

Para las sentencias atómicas p y q donde hay una sustitución Ɵ tal que

SUST(Ɵ, P’i)=SUST (Ɵ,Pi) para todo i

En nuestro ejemplo:

*El MODUS PONENS GENERALIZADO ERIGE AL MODUS PONENS PROPOSICIONAL A LA LÓGICA DE PRIMER ORDEN.

Page 15: Inferencia en Lógica de Primer Orden

UNIFICACIÓNEs el proceso por el cual las reglas de inferencia elevadas encuentran las sustituciones que hacen que expresiones lógicas diferentes se hagan idénticas.

Es el componente clave de todos los algoritmos de inferencia en lógica de primer orden.

El algoritmo UNIFICA toma dos sentencias y devuelve un unificador para ellas, si éste existe:𝑈𝑁𝐼𝐹𝐼𝐶𝐴 𝑝, 𝑞 = Ɵ 𝑑𝑜𝑛𝑑𝑒 𝑆𝑈𝑆𝑇 Ɵ, 𝑝 = 𝑆𝑈𝑆𝑇 Ɵ, 𝑞

Ejemplo: supongamos que tenemos una petición 𝐶𝑜𝑛𝑜𝑐𝑒(𝐽𝑢𝑎𝑛, 𝑥): ¿a quién conoce Juan?Debemos encontrar todas las sentencias de la BC que se unifiquen con 𝐶𝑜𝑛𝑜𝑐𝑒(𝐽𝑢𝑎𝑛, 𝑥)

Page 16: Inferencia en Lógica de Primer Orden

UNIFICACIÓN

Estas son los resultados de la unificación con 4 sentencias que podrían estar en la BC:

La última unificación falla por que x no puede tomar los valores 𝐽𝑢𝑎𝑛 𝑦 𝐸𝑙𝑖𝑠𝑎𝑏𝑒𝑡 al mismo tiempo. Este problema se presenta cuando las dos sentencias tienen que usar el mismo nombre de variable, 𝑥.

Si renombramos la x de Conoce(𝑥, 𝐸𝑙𝑖𝑠𝑎𝑏𝑒𝑡) por otro nombre de variable la unificación* tendrá éxito:

*Investigar Unificador más General (UMG)

Page 17: Inferencia en Lógica de Primer Orden

ALMACENAMIENTO Y RECUPERACIÓNRecordemos las funciones 𝐷𝐸𝐶𝐼𝑅 𝑦 𝑃𝑅𝐸𝐺𝑈𝑁𝑇𝐴𝑅, utilizadas para informar a o interrogar la BC.Por debajo de estas están las funciones primitivas 𝐴𝐿𝑀𝐴𝐶𝐸𝑁𝐴𝑅 𝑦 𝐵𝑈𝑆𝐶𝐴𝑅.𝐴𝐿𝑀𝐴𝐶𝐸𝑁𝐴𝑅(𝑠) guarda una sentencia s en la base de conocimiento, 𝐵𝑈𝑆𝐶𝐴𝑅(𝑞) devuelve todos los unificadores que unifican la petición q con alguna sentencia de la BC.La forma más fácil, pero ineficiente* de implementar 𝐴𝐿𝑀𝐴𝐶𝐸𝑁𝐴𝑅 𝑦 𝐵𝑈𝑆𝐶𝐴𝑅 consiste en mantener todos los hechos en la BC mediante una lista larga:

Dada una petición 𝑞, se llama a 𝑈𝑁𝐼𝐹𝐼𝐶𝐴(𝑞, 𝑠) con cada sentencia s de la lista.

*Investigar mecanismos para realizar la búsqueda de forma más eficiente(página 316-318 del libro)

Page 18: Inferencia en Lógica de Primer Orden

ENCADENAMIENTO HACIA ADELANTE

• Anteriormente se vio un algoritmo de encadenamiento hacia adelante para cláusulas positivas proposicionales.

• La idea era comenzar a partir de las sentencias atómicas de la BC y aplicar el 𝑀𝑂𝐷𝑈𝑆 𝑃𝑂𝑁𝐸𝑁𝑆 hacia adelante, añadiendo las sentencias atómicas nuevas hasta que no se puedan realizar más inferencias.

• Las cláusulas positivas como 𝑆𝑖𝑡𝑢𝑎𝑐𝑖ó𝑛 → 𝑅𝑒𝑠𝑝𝑢𝑒𝑠𝑡𝑎 son útiles para sistemas que realizan inferencias en respuesta a información nueva que se ha recibido.

• Vale la pena intentar construir una BC tan sólo con cláusulas positivas de manera que se evite el coste de aplicar la resolución.

Page 19: Inferencia en Lógica de Primer Orden

CLÁUSULAS POSITIVAS DE PRIMER ORDENSon disyunciones de literales en los cuales sólo uno es positivo.Ejemplos:

Al contrario que los literales proposicionales, los literales de primer orden pueden contener variables, en cuyo caso se asume que están cuantificadas universalmente. Son una forma normal muy adecuada para utilizar el MODUS PONENS GENERALIZADO.No todas las BC se pueden convertir a un conjunto de cláusulas positivas, pero si se pueden transformar.

Page 20: Inferencia en Lógica de Primer Orden

CLÁUSULAS POSITIVAS DE PRIMER ORDENConsidere el siguiente problema:

Demostraremos que West es un Criminal.Primero, representaremos estos hechos como cláusulas positivas de primer orden.

“Nono … tiene algunos misiles”: Ǝ𝑥 𝑇𝑖𝑒𝑛𝑒 (𝑁𝑜𝑛𝑜, 𝑥) ^ (𝑀𝑖𝑠𝑖𝑙(𝑥)Se transforma en dos cláusulas positivas mediante la eliminación del Existencial, introduciendo la constante M1:

𝑇𝑖𝑒𝑛𝑒 (𝑁𝑜𝑛𝑜,𝑀1)𝑀𝑖𝑠𝑖𝑙 (𝑀1) 9.4

Page 21: Inferencia en Lógica de Primer Orden

CLÁUSULAS POSITIVAS DE PRIMER ORDEN

Page 22: Inferencia en Lógica de Primer Orden

ALGORITMO SENCILLO DE ENCADENAMIENTO HACIA ADELANTE • Comenzando con hechos conocidos, el proceso dispara todas las reglas cuyas premisas se

satisfacen, añadiendo sus conclusiones al conjunto de hechos conocidos. • El proceso se repite hasta que la petición es respondida o no se puede añadir más

hechos

Page 23: Inferencia en Lógica de Primer Orden

ALGORITMO SENCILLO DE ENCADENAMIENTO HACIA ADELANTE

Page 24: Inferencia en Lógica de Primer Orden

ALGORITMO SENCILLO DE ENCADENAMIENTO HACIA ADELANTE

Hechos iniciales

Primera Iteración

Segunda Iteración

Page 25: Inferencia en Lógica de Primer Orden

EMPAREJAMIENTO DE REGLAS CON LOS HECHOS CONOCIDOS

Suponga que queremos aplicar la regla: 𝑀𝑖𝑠𝑖𝑙(𝑥) −> 𝐴𝑟𝑚𝑎(𝑥)

Necesitamos encontrar todos los hechos que se unifican con 𝑀𝑖𝑠𝑖𝑙(𝑥).En una BC indexada de forma adecuada, esto se puede realizar en tiempo constante por cada hecho.Ahora considere una regla como:

𝑀𝑖𝑠𝑖𝑙(𝑥) ^𝑇𝑖𝑒𝑛𝑒(𝑁𝑜𝑛𝑜, 𝑥) −> 𝑉𝑒𝑛𝑑𝑒(𝑊𝑒𝑠𝑡, 𝑥, 𝑁𝑜𝑛𝑜)Podemos encontrar todos los objetos que tiene Nono en un tiempo constante por objeto: por cada objeto podríamos comprobar si es un misil.

Page 26: Inferencia en Lógica de Primer Orden

EMPAREJAMIENTO DE REGLAS CON LOS HECHOS CONOCIDOS

• Si la base de conocimiento tiene muchos objetos en posesión de Nono y unos pocos misiles, sería mejor encontrar todos los misiles primero y entonces comprobar si son de Nono.

• Este es el problema de la ordenación de conjuntores: encontrar una ordenación para resolver los conjuntores de las premisas de una regla de tal manera que el coste se minimice.

• La heurística de la variable más restringida que se usa para PSR sugeriría ordenar primero los misiles si hay menos misiles que objetos.

Page 27: Inferencia en Lógica de Primer Orden

EMPAREJAMIENTO DE REGLAS CON LOS HECHOS CONOCIDOS

Podemos ver cada conjuntor como una restricción sobre las variables que contiene, por ejemplo, Misil(x) es una restricción unitaria sobre la variable x. Ampliando esta idea, podemos expresar cada PSR de dominio finito como una única cláusula positiva junto a algunos hechos base asociados a ella

Page 28: Inferencia en Lógica de Primer Orden

ENCADENAMIENTO HACIA ATRÁSEstos algoritmos trabajan hacia atrás desde el objetivo, encadenando a través de las reglas hasta encontrar los hechos conocidos que soportan la demostración.

Page 29: Inferencia en Lógica de Primer Orden

ENCADENAMIENTO HACIA ATRÁSEl algoritmo se invoca con una lista de objetivos que contiene un solo elemento, la petición original, y devuelve el conjunto de todas las sustituciones que satisfacen la petición.

La lista de objetivos se puede ver como una «pila» a la espera de ser procesada; si todos tos objetivos se pueden satisfacer, entonces la rama actual de la demostración tiene éxito.

Page 30: Inferencia en Lógica de Primer Orden

PROGRAMACIÓN LÓGICA

• La programación lógica es una tecnología que está bastante relacionada con abarcar el ideal declarativo:

• “Los sistemas se construirían expresando el conocimiento en un lenguaje formal y los problemas se resolverían ejecutando procesos de inferencia sobre dicho conocimiento”.

• Prolog es, de lejos, el lenguaje de programación lógica más extensamente utilizado.

• Los programas en Prolog son conjuntos de cláusulas positivas escritas en una notación algo diferente a la estándar de la lógica de primer orden.

• Prolog utiliza las letras mayúsculas en las variables y las minúsculas en las constantes.

Page 31: Inferencia en Lógica de Primer Orden

PROGRAMACIÓN LÓGICAes_un_pais(paraguay). %Paraguay es un países_un_pais(argentina).es_un_pais(brasil).es_un_pais(bolivia).es_un_pais(chile).es_un_pais(perú).

es_un_pais(china).false.

es_un_pais(X), write(X), nl, fail.paraguayargentinabrasilboliviachileperúfalse.

Fuente: Gustavo DeJean.https://goo.gl/orpZDb

Es una implementación en open sourcedel lenguaje de programación Prolog. Su autor principal es JanWielemaker (VU UniversityAmsterdam). En desarrollo ininterrumpido desde 1987.

limita_con(paraguay, brasil).%Paraguay limita con Brasillimita_con(paraguay, argentina).limita_con(paraguay, bolivia).

limita_con(paraguay, X).Limita_con(X, Y).limita_con(X, Y), write(X), write(' '), write(Y), nl, faillimitrofes(paraguay, Brasil).

limitrofes(X,Y):- limita_con(X,Y).limitrofes(X,Y):- limita_con(Y,X).

Page 32: Inferencia en Lógica de Primer Orden

PROGRAMACIÓN LÓGICA• Las cláusulas están escritas con la cabeza precediendo al cuerpo,

• “:-” se utiliza para las implicaciones a la izquierda, las comas separan los

literales del cuerpo y el punto indica el final de la sentencia.

Criminal(X) :- americano(X), arma(Y), vende(X,Y,Z), hostil (Z)

Como ejemplo, aquí tenemos un programa en Prolog para unir (X,Y,Z), que

tiene éxito si la lista Z es el resultado de unir las listas X y Y:

Unir([ ], Y, Y)

Unir ([A|X], Y, [A|Z]) :- unir (X, Y, Z)

Page 33: Inferencia en Lógica de Primer Orden

PROGRAMACIÓN LÓGICA

Unir([ ], Y, Y)

Unir ([A|X], Y, [A|Z]) :- unir (X, Y, Z)

unir una lista vacía a una lista Y genera la misma lista Y

[A | Z ] es el resultado de unir [A | X] a Y, dado que z es el resultado de unir x a Y.

Otro ejemplo: unir (A, B, [1, 2])Obtenemos las soluciones hacia atrás:

A=[ ] B=[1, 2]A=[1] B=[2]A=[1, 2] B=[ ]

La ejecución de los programas en Prolog se hace mediante el encadenamiento hacia atrás en primero en profundidad, donde las cláusulas se van intentando en el orden en el que se han escrito en la BC.

Page 34: Inferencia en Lógica de Primer Orden

RESOLUCIÓN• Anteriormente vimos que la resolución proposicional es un procedimiento de

inferencia mediante refutación que es completo para la lógica proposicional. • Veremos cómo ampliar la resolución a la lógica de primer orden

Formas normales conjuntivas(FNC) en lógica de primer orden

• Una conjunción de cláusulas, donde cada cláusula es una disyunción de literales• Cada sentencia en lógica de primer orden se puede convertir a una sentencia en

FNC que es equivalente inferencialmente.• La sentencia en FNC será insatisfacible sólo cuando la sentencia original lo sea

Page 35: Inferencia en Lógica de Primer Orden

CONVERSIÓN A FNC

Mostraremos el procedimiento transformando la sentencia “Todo el mundo que ama a los animales es amado por alguien”

• Eliminación de las implicaciones:

• Anidar las ¬:

La sentencia ahora se lee «Hay algún animal que x no ama, o (si éste no es el caso) alguien ama a x»

Page 36: Inferencia en Lógica de Primer Orden

CONVERSIÓN A FNC

• Estandarizar las variables: para las sentencias que utilizan el mismo nombre de variable dos veces, se cambia una de las dos variables.

• Skolemnizar: la Skolemización es el proceso de borrar los cuantificadores existenciales mediante su eliminación

• Eliminar los cuantificadores universales y distribuir la conjunción respecto a la negación:

Afortunadamente, las personas rara vez necesitan ver las sentencias en FNC

Page 37: Inferencia en Lógica de Primer Orden

• El uso de la unificación para obtener las sustituciones adecuadas de las variables elimina el paso de instanciación en las demostraciones de primer orden, haciendo que el proceso sea mucho más eficiente.• Una versión elevada del Modus Ponens utiliza la unificación para proporcionar una regla de inferencia natural y potente, el Modus Ponens Generalizado. Los algoritmos de encadenamiento hacia delante y de encadenamiento hacia atrás aplican esta regla a conjuntos de cláusulas positivas.• El encadenamiento hacia delante se utiliza en las bases de datos deductivas, donde se puede combinar con las operaciones de las bases de datos relaciónales. También se utiliza en los sistemas de producción, que pueden hacer actualizaciones eficientes en conjuntos de reglas muy grandes.• El encadenamiento hacia delante es completo en los programas Datalog y corre en tiempo polinómico.• El encadenamiento hacia atrás se utiliza en los sistemas de programación lógica como el Prolog, que emplea una sofisticada tecnología de compilación para proporcionar una inferencia muy rápida. • El encadenamiento hacia atrás sufre de inferencias redundantes y bucles infinitos; esto se puede aliviar mediante la memorización.• La regla de inferencia de la resolución generalizada proporciona un sistema de demostración completo en lógica de primer orden, utilizando bases de conocimiento en forma normal conjuntiva.

RESUMEN*

*(páginas 352-353(380-381)