Capítulo V: Programación Lógica 5.1 Breve Introducción al Cálculo de Predicados 1 Definiciones Básicas Proposición: sentencia lógica que puede ser verdadera o falsa. Se construye de objetos y relaciones. Lógica formal provee métodos para verificar su validez Lógica Simbólica: permite expresar proposiciones, relaciones entre proposiciones y cómo inferir nuevas proposiciones que son verdaderas. Cálculo de Predicado: Forma particular de lógica simbólica usada en programación lógica. Objetos y Términos Compuestos Objetos se representan como un único término, que puede ser: constante : representa un único objeto variable : puede representar diferentes objetos Término compuesto: consiste de functor y una lista de parámetros Un término con n parámetros se denomina n-tupla. El término padre(maria, jesús) es una 2-tupla. 2 Proposiciones Proposiciones pueden ser: Atómicas: corresponde a un único término compuesto Compuestas: dos o más proposiciones atómicas conectadas por operadores lógicos. Una proposiciones puede ser: Hecho: se define como una verdad (axioma) Consulta: la verdad debe ser probada (teorema) Conectores Lógicos NOMBRE SIMBOLO EJEMPLO ¬ ¬a conjunción ∩ (∧) a∧b disjunción ∪ (∨) a∨b equivalencia ≡ (⇔) a≡b implicancia ⊃ (⇒) ⊂ (⇐) a⊃b b⊂a negación 3 Cuantificadores Cuantificador Universal ∀X.P : Para todo X, P es verdadero Cuantificador Existencial ∃X.P : Existe un valor X tal que P es verdadero EJEMPLOS ∀X.(mujer(X) ⊃ humano(X)) ∃X.(madre(maria, X) ∩ masculino(X)) Forma de Cláusula Para automatizar se requiere reducir redundancia en la expresión de proposiciones. La forma de cláusula simplifica proposiciones, sin pérdida de generalidad. Una cláusula tiene la siguiente forma: B1 ∪ B2 ∪ … ∪ Bn ⊂ A1 ∩ A2 ∩ … ∩ Am Donde As y Bs son términos Una cláusula significa: “Si todos los As son verdaderos, entonces al menos un B es verdadero” 4 Características de Cláusulas Una forma clausal no requiere de cuantificadores existenciales. Cuantificadores universales están implícitos en el uso de variables de proposiciones atómicas. No se requiere de otro conector que la conjunción y disjunción, apareciendo sólo en el orden definido por una cláusula (derecha e izquierda). Cualquier proposición de cálculo de predicado se puede transformar en una cláusula. Ejemplo de Cláusula gusta(ana, fiesta) consecuencia padre(luis, juan) ∪ padre(luis, maria) ⊂ gusta(joven, fiesta) ∩ joven(ana) antecedente ⊂ padre(juan, pepe) ∩ madre(maria, pepe) ∩ abuelo(luis, pepe) 5 Resolución Cálculo de Predicado provee método para expresar conjunto de proposiciones Aplicación interesante o útil es inferir de las proposiciones dadas nuevos hechos. Una aplicación es descubrir nuevos teoremas Resolución es proceso que permite inferir proposiciones de proposiciones dadas. Ejemplo de Resolución Si se tiene: papa(juan, pato) ∪ mama(juan, pato) ⊂ padre(juan, pato) abuelo(juan, roro) ⊂ papa(juan, pato) ∩ papa(pato, roro) Se puede resolver que: abuelo(juan, roro) ∪ mama(juan, pato) ⊂ padre(juan, pato) ∩ papa(pato, roro) ¡Proceso de resolución consiste en conectar términos de la izquierda y de la derecha, y luego eliminar términos redundantes! 6 Tautologías Importantes para Resolución A⊂B C⊂D A∪C⊂B∩D A∪B⊂C∩B A⊂C Proceso de Resolución La resolución es un proceso complejo Presencia de variables requiere de un proceso de calce (matching) que al reemplazar sus valores produce una verdad (éxito). Este proceso se denomina unificación. Asignación temporal de valores a variables se denomina instanciación. Fallas (no éxito) en la instanciación requiere de backtracking. 7 Cláusulas de Horn Cláusulas de Horn simplifican el proceso de resolución, y permiten representar la mayoría de las proposiciones lógicas. Sólo permite dos tipos de formas: Existe sólo una proposición atómica en la izquierda de la cláusula (cláusula con cabeza) El lado izquierdo está vacío (cláusula sin cabeza) Cláusulas con cabeza se usan para definir reglas, en cambio cláusulas sin cabezas sólo establecen ciertos hechos. Conclusiones Programación Lógica consiste básicamente en definir un conjunto de reglas y hechos (hipótesis). El sistema luego debe ser capaz de inferir si una determinada proposición (meta) es una verdad. Prolog está basado en el uso de cláusulas de Horn. 8