Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Bases Formales de la Computación Cálculo de Predicados Formalización de Programas Gerardo M. Sarria M. Pontificia Universidad Javeriana 27 de marzo de 2009 Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas CÁLCULO PROPOSICIONAL Y DE PREDICADOS Contenido Gerardo M. Sarria M. Lógica en General Cálculo Proposicional 1 Lógica en General 2 Cálculo Proposicional 3 Cálculo de Predicados 4 Formalización de Programas Cálculo de Predicados Formalización de Programas ¿Por qué la lógica? Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Especificación formal – sin ambigüedad Razonamiento formal – prueba de propiedades de sistemas Herramientas para la automatización de razonamiento ¿Por qué la lógica? Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Especificación formal – sin ambigüedad Razonamiento formal – prueba de propiedades de sistemas Herramientas para la automatización de razonamiento Las Ciencias de la Computación tratan el desarrollo de programas y hardware. La Lógica en las Ciencias de la Computación es usada: en el diseño de software y hardware seguro y confiable en la verificación de programas existentes y diseño de hardware para proveer formalismos adecuados para la automatización Lógica en las Ciencias de la Computación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Diseño de circuitos Satisfacción de restricciones Planificación Verificación de software y hardware (model checking) Bases de datos Provador de teoremas en matemáticas Deducción Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Deducción significa que una cosa se sigue lógicamente de otra: Formalización de Programas KB ⊧ α De la base de conocimiento KB se deduce la sentencia α si y solo si α es verdadero en todos los mundos donde KB es verdadero Deducción Gerardo M. Sarria M. Lógica en General Cálculo Proposicional E.g., de la KB que contiene “América ganó” y “Pasto ganó” se deduce que “Tanto América ganó como Pasto ganó” Cálculo de Predicados Formalización de Programas E.g., de x + y = 4 se deduce que 4 = x + y Deducción es una relación entre sentencias (i.e., sintaxis) que es basado en la semántica Saltar la lógica mal usada Deducción Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Dios es amor. El amor es ciego. Steve Wonder es ciego. Por lo tanto, Steve Wonder es Dios. Me dijeron que Yo soy nadie. Nadie es perfecto. Entonces, yo soy perfecto. Pero, solo Dios es perfecto. Por lo tanto, Yo soy Dios. Si Steve Wonder es Dios, Yo soy Steve Wonder!!!! Por Dios, soy ciego!!! Modelos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los lógicos usualmente piensan en términos de modelos, los cuales son mundos formalmente estructurados. Modelos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los lógicos usualmente piensan en términos de modelos, los cuales son mundos formalmente estructurados. Se dice que m es un modelo de una sentencia α si α es verdadero en m Modelos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los lógicos usualmente piensan en términos de modelos, los cuales son mundos formalmente estructurados. Se dice que m es un modelo de una sentencia α si α es verdadero en m M(α) es el conjunto de todos los modelos de α Modelos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los lógicos usualmente piensan en términos de modelos, los cuales son mundos formalmente estructurados. Se dice que m es un modelo de una sentencia α si α es verdadero en m M(α) es el conjunto de todos los modelos de α Entonces KB ⊧ α si y solo si M(KB) ⊆ M(α) Modelos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los lógicos usualmente piensan en términos de modelos, los cuales son mundos formalmente estructurados. Se dice que m es un modelo de una sentencia α si α es verdadero en m M(α) es el conjunto de todos los modelos de α Entonces KB ⊧ α si y solo si M(KB) ⊆ M(α) x x E.g. KB = América ganó y Pasto ganó α = América ganó M( ) x x x x x x x x x xx x x x x x x x x x x x x x x x x x x xx x x x x x x M(KB) x x x x x x x x Cálculo Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Combinación entre proposiciones y operadores Booleanos. Ejemplo: “si yo estudio bastante y yo hago todas las tareas entonces yo sacaré una buena nota.” Proposiciones atómicas (pueden ser cierto o falso): Yo estudio bastante Yo hago todas las tareas Yo sacaré una buena nota Sintaxis Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Las variables proposicionales (booleanas) usualmente son denotadas como p, q, s, . . . Los conectivos: ∧ “y”, ∨ “o”, ¬ “no”, → “implica”, ↔ “equivalente” Fórmula proposicional: Cada variable proposicional es una fórmula, tambien llamada fórmula atómica o simplemente átomo true y false son fórmulas (también denotados ⊺ y ) Si A1 , . . . , An son fórmulas, donde n ≥ 2, entonces (A1 ∧ . . . ∧ An ) y (A1 ∨ . . . ∨ An ) son fórmulas Si A es una fórmula, entonces ¬A es una fórmula Si A y B son fórmulas, entonces (A → B) y (A ↔ B) son fórmulas. Subfórmulas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: ((p ∧ q) → (q ∨ ¬p ∨ s)) Subfórmulas inmediatas: (p ∧ q) y (q ∨ ¬p ∨ s) Subfórmulas: ((p ∧ q) → (q ∨ ¬p ∨ s)) (p ∧ q) y (q ∨ ¬p ∨ s) p; q; ¬p; s Notación: A[B] significa B ocurre en A como una subfórmula Semántica: Interpretación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Una interpretación I asigna valores de verdad a las variables proposicionales I ∶ P → {1, 0} 0, 1 son llamados valores de verdad o también valores booleanos. Si I (p) = 1, entonces p es true en I . Si I (p) = 0, entonces p es false en I . Interpretación Gerardo M. Sarria M. Lógica en General Se extiende I a todas las fórmulas: Cálculo Proposicional 1 I (true) = 1 y I (false) = 0. Cálculo de Predicados 2 I (A1 ∧ . . . ∧ An ) = 1 si y solo si I (Ai ) = 1 para todo i. Formalización de Programas 3 I (A1 ∨ . . . ∨ An ) = 1 si y solo si I (Ai ) = 1 para algún i. 4 I (¬A) = 1 si y solo si I (A) = 0. 5 I (A → B) = 1 si y solo si I (A) = 0 o I (B) = 1. 6 I (A ↔ B) = 1 si y solo si I (A) = I (B). Notación: I ⊧ A si I (A) = 1 I ⊭ A si I (A) = 0 (A es true en I ) (A es false en I ) Tablas de Verdad Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Tabla de verdad: A 1 1 0 0 B 1 0 1 0 ¬A 0 0 1 1 A∧B 1 0 0 0 A∨B 1 1 1 0 A⇒B 1 0 1 1 A⇔B 1 0 0 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Si una fórmula A es cierta en I , se dice que I satisface a A y que I es un modelo de A, denotado por I ⊧ A. A es satisfacible si es cierta es alguna interpretación. A es válida si es cierta en toda interpretación. Dos fórmulas A y B son llamadas equivalentes, denotado A ≡ B si ellas tienen los mismos modelos. Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 0 1 1 0 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 0 1 1 1 0 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 0 1 1 1 0 0 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 0 1 1 1 0 0 1 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 ¿Esta fórmula es satisfacible? 0 1 1 1 0 0 1 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: A = p ∧ ¬q → q ∨ ¬p Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 ¿Esta fórmula es satisfacible? Si 0 1 1 1 0 0 1 1 1 Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Ejemplo: A = p ∧ ¬q → q ∨ ¬p Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 ¿Esta fórmula es satisfacible? Si 0 1 1 1 0 0 1 1 1 ¿Esta fórmula es válida? Satisfacibilidad y Validez Gerardo M. Sarria M. Lógica en General Ejemplo: A = p ∧ ¬q → q ∨ ¬p Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se conoce cómo calcular el valor de verdad de A dada una interpretación I . Si I = {p = 0; q = 0}, entonces I (A) = 1. Ahora se consideran todas las posibles interpretaciones: p q p ∧ ¬q → q ∨ ¬p 0 0 1 ¿Esta fórmula es satisfacible? Si 0 1 1 1 0 0 1 1 1 ¿Esta fórmula es válida? No Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q 1 Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q 1 1 Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q 1 1 0 Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q 1 1 0 1 Equivalencia Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas p 0 0 1 1 q 0 1 0 1 p ∧ ¬q → q ∨ ¬p 1 1 0 1 ¬p ∨ q 1 1 0 1 Se tiene entonces que p ∧ ¬q → q ∨ ¬p es equivalente a ¬p ∨ q Conexión entre Nociones Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas 1 Una fórmula A es válida si y solo si ¬A es insatisfacible. Conexión entre Nociones Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados 1 Una fórmula A es válida si y solo si ¬A es insatisfacible. Formalización de Programas 2 Una fórmula A es satisfacible si y solo si ¬A es no válida. Conexión entre Nociones Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados 1 Una fórmula A es válida si y solo si ¬A es insatisfacible. Formalización de Programas 2 Una fórmula A es satisfacible si y solo si ¬A es no válida. 3 Una fórmula A es válida si y solo si A es equivalente a true. Conexión entre Nociones Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados 1 Una fórmula A es válida si y solo si ¬A es insatisfacible. Formalización de Programas 2 Una fórmula A es satisfacible si y solo si ¬A es no válida. 3 Una fórmula A es válida si y solo si A es equivalente a true. 4 Dos fórmulas A y B son equivalentes si y solo si la fórmula A ↔ es válida. Equivalencias Útiles Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas A ≡ B si y solo si A ⊧ B y B ⊧ A (A ∧ B) (A ∨ B) ((A ∧ B) ∧ C ) ((A ∨ B) ∨ C ) ¬(¬A) (A ⇒ B) (A ⇒ B) (A ⇔ B) ¬(A ∧ B) ¬(A ∨ B) (A ∧ (B ∨ C )) (A ∨ (B ∧ C )) ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ (B ∧ A) conmutativa de ∧ (B ∨ A) conmutativa de ∨ (A ∧ (B ∧ C )) asociativa de ∧ (A ∨ (B ∨ C )) asociativa de ∨ A eliminación doble negación (¬B ⇒ ¬A) contraposición (¬A ∨ B) eliminación implicación ((A ⇒ B) ∧ (B ⇒ A)) eliminación bicondicional (¬A ∨ ¬B) De Morgan (¬A ∧ ¬B) De Morgan ((A ∧ B) ∨ (A ∧ C )) distributiva de ∧ sobre ∨ ((A ∨ B) ∧ (A ∨ C )) distributiva de ∨ sobre ∧ Métodos de Prueba Deductiva Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los métodos de prueba se dividen en dos clases: Métodos de Prueba Deductiva Gerardo M. Sarria M. Lógica en General Los métodos de prueba se dividen en dos clases: Cálculo Proposicional Cálculo de Predicados Formalización de Programas Aplicación de reglas de inferencia Generación legı́tima (adecuada) de nuevas sentencias a partir de las viejas Prueba = una secuencia de aplicación de reglas de inferencia Puede usarse las reglas de inferencia como operadores en un algoritmo de búsqueda estandar Normalmente requiere la traducción de las sentencias a una forma normal Métodos de Prueba Deductiva Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Chequeo del Modelo (Model Checking) Enumeración de la tabla de verdad (siempre exponencial en n) Backtracking mejorado Búsqueda heurı́stica en el espacio del modelo (sólido pero incompleto) e.g., algoritmos minconflictos y ascención de colinas Resolución Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Forma Normal Conjuntiva (CNF—universal) conjunción de disyunciones de literales ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ clausulas E.g., (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) Resolución Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Forma Normal Conjuntiva (CNF—universal) conjunción de disyunciones de literales ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ clausulas E.g., (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) Lema Solidez (Soundness): Sea A ≡ L1 ∨ . . . ∨ Ln . Si ∃Li ≡ ¬Lj , entonces A es válida. Resolución Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Forma Normal Conjuntiva (CNF—universal) conjunción de disyunciones de literales ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ clausulas E.g., (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) Lema Solidez (Soundness): Sea A ≡ L1 ∨ . . . ∨ Ln . Si ∃Li ≡ ¬Lj , entonces A es válida. Lema Completitud (Completeness): Sea A ≡ L1 ∨ . . . ∨ Ln . Si A es válida, entonces ∃Li ≡ ¬Lj . Resolución Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Forma Normal Conjuntiva (CNF—universal) conjunción de disyunciones de literales ´¹¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¸¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹ ¹¶ clausulas E.g., (A ∨ ¬B) ∧ (B ∨ ¬C ∨ ¬D) Lema Solidez (Soundness): Sea A ≡ L1 ∨ . . . ∨ Ln . Si ∃Li ≡ ¬Lj , entonces A es válida. Lema Completitud (Completeness): Sea A ≡ L1 ∨ . . . ∨ Ln . Si A es válida, entonces ∃Li ≡ ¬Lj . Teorema: Una fórmula en CNF A ≡ B1 ∧ . . . ∧ Bn es válida si y solo si ∀Bk , ∃Li ≡ ¬Lj . Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Verdadero es válido en todos los modelos. Si α es válido entonces se mantiene la relación de deducción. Similarmente para el caso contrario. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Verdadero es válido en todos los modelos. Si α es válido entonces se mantiene la relación de deducción. Similarmente para el caso contrario. Para cualquier α, Falso ⊧ α Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Verdadero es válido en todos los modelos. Si α es válido entonces se mantiene la relación de deducción. Similarmente para el caso contrario. Para cualquier α, Falso ⊧ α Falso no es cierto en ningún modelo, de manera que α es cierto en todos los modelos donde Falso sea cierto. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Verdadero es válido en todos los modelos. Si α es válido entonces se mantiene la relación de deducción. Similarmente para el caso contrario. Para cualquier α, Falso ⊧ α Falso no es cierto en ningún modelo, de manera que α es cierto en todos los modelos donde Falso sea cierto. α ⊧ β si y solo si (α ⇒ β) es válida Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ¿Qué se puede decir de las siguientes aserciones? α es válido si y solo si Verdadero ⊧ α Verdadero es válido en todos los modelos. Si α es válido entonces se mantiene la relación de deducción. Similarmente para el caso contrario. Para cualquier α, Falso ⊧ α Falso no es cierto en ningún modelo, de manera que α es cierto en todos los modelos donde Falso sea cierto. α ⊧ β si y solo si (α ⇒ β) es válida α ⇒ β se mantiene en todos los modelos donde β es cierto o donde ¬α se mantiene. Es precisamente el caso donde α ⇒ β es válido. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) 6 Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) 6 A∨B Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) 6 A∨B 12 Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) 6 A∨B 12 A⇔B ⇔C Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere un vocabulario con sólo cuatro proposiciones A, B, C , D. ¿Cuántos modelos hay para las siguientes sentencias? (A ∧ B) ∨ (B ∧ C ) 6 A∨B 12 A⇔B ⇔C 4 Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Válida Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Válida ((Humo ∧ Calor ) ⇒ Fuego) ⇔ ((Humo ⇒ Fuego) ∨ (Calor ⇒ Fuego)) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Válida ((Humo ∧ Calor ) ⇒ Fuego) ⇔ ((Humo ⇒ Fuego) ∨ (Calor ⇒ Fuego)) Válida Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Válida ((Humo ∧ Calor ) ⇒ Fuego) ⇔ ((Humo ⇒ Fuego) ∨ (Calor ⇒ Fuego)) Válida (Humo ⇒ Fuego) ⇒ ((Humo ∧ Calor ) ⇒ Fuego) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Demuestre para cada una de las siguientes sentencias, si es válida, Satisfacible o ninguna de las dos. Humo ⇒ Humo Válida Humo ⇒ Fuego Satisfacible (Humo ⇒ Fuego) ⇒ (¬Humo ⇒ ¬Fuego) Satisfacible Humo ∨ Fuego ∨ ¬Fuego Válida ((Humo ∧ Calor ) ⇒ Fuego) ⇔ ((Humo ⇒ Fuego) ∨ (Calor ⇒ Fuego)) Válida (Humo ⇒ Fuego) ⇒ ((Humo ∧ Calor ) ⇒ Fuego) Válida Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Dado el siguiente párrafo, ¿puede demostrar que el unicornio es un animal mitológico? ¿que es mágico? ¿que tiene cuernos? Si el unicornio es un animal mitológico, entonces es inmortal, pero si no es mitológico, entonces es un mamı́fero mortal. Si el unicornio es inmortal o mamı́fero, entonces tiene cuernos. El unicornio es mágico si tiene cuernos. Pros y Contras de la Lógica Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas La lógica proposicional es declarativa: piezas de sintaxis corresponden a hechos Pros y Contras de la Lógica Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional La lógica proposicional es declarativa: piezas de sintaxis corresponden a hechos Cálculo de Predicados Formalización de Programas La lógica proposicional permite información parcial/disjuntiva/negativa (a diferencia de la mayorı́a de estructuras de datos y bases de datos) Pros y Contras de la Lógica Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional La lógica proposicional es declarativa: piezas de sintaxis corresponden a hechos Cálculo de Predicados Formalización de Programas La lógica proposicional permite información parcial/disjuntiva/negativa (a diferencia de la mayorı́a de estructuras de datos y bases de datos) La lógica proposicional es composicional: el significado de B1,1 ∧ P1,2 es derivado del significado de B1,1 y de P1,2 Pros y Contras de la Lógica Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas El significado en la lógica proposicional es independiente del contexto (a diferencia del lenguaje natural, donde el significado depende del contexto) Pros y Contras de la Lógica Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas El significado en la lógica proposicional es independiente del contexto (a diferencia del lenguaje natural, donde el significado depende del contexto) La lógica proposicional tiene un poder expresivo muy limitado (a diferencia del lenguaje natural) E.g., no se puede decir “los hoyos causan brisa en cuadros adyacentes” excepto escribiendo una sentencia para cada cuadro Cálculo de Predicados (FOL) Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Mientras que la lógica proposicional asume un mundo que contiene hechos, la lógica de primer orden (como el lenguaje natural) asume que el mundo contiene Objetos: gente, casas, números, teorias, Ronald McDonald, colores, juegos de baseball, guerras, siglos . . . Relaciones: rojo, redondo, falso, primo, hermano de, más grande que, dentro, parte de, tiene color, occurió después, pertenece, viene entre, . . . Funciones: padre de, mejor amigo, tercera entrada de, uno más que, el final del . . . FOL: Elementos Básicos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Constantes Predicados Funciones Variables Conectivos Igualdad Cuantificadores ReyJohn, 2, UCB, . . . Hermano, >, . . . Sqrt, PiernaIzquierdaDe, . . . x, y , a, b, . . . ∧ ∨ ¬ ⇒⇔ = ∀∃ Sentencias Atómicas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Sentencia atómica = predicado(termino1 , . . . , terminon ) o termino1 = termino2 Término = funcion(termino1 , . . . , terminon ) o constante o variable Cálculo de Predicados Formalización de Programas Sentencias Atómicas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Sentencia atómica = predicado(termino1 , . . . , terminon ) o termino1 = termino2 Término = funcion(termino1 , . . . , terminon ) o constante o variable Cálculo de Predicados Formalización de Programas E.g., Hermano(ReyJohn, RicardoCorazondeLeon) > (Longitud(PiernaIzquierdaDe(Ricardo)), Longitud(PiernaIzquierdaDe(ReyJohn))) Sentencias Complejas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Sentencias complejas están hechas de sentencias atómica usando conectivos Sentencias Complejas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Sentencias complejas están hechas de sentencias atómica usando conectivos ¬S, S1 ∧ S2 , S1 ∨ S2 , S1 ⇒ S2 , S1 ⇔ S2 Sentencias Complejas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Sentencias complejas están hechas de sentencias atómica usando conectivos ¬S, E.g. S1 ∧ S2 , S1 ∨ S2 , S1 ⇒ S2 , S1 ⇔ S2 Hermano(ReyJohn, Ricardo) ⇒ Hermano(Ricardo, ReyJohn) >(1, 2) ∨ ≤(1, 2) >(1, 2) ∧ ¬>(1, 2) Verdad en la Lógica de Primer Orden Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Las sentencias son verdaderas con respecto a un modelo y una interpretación Verdad en la Lógica de Primer Orden Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Las sentencias son verdaderas con respecto a un modelo y una interpretación Un modelo contiene ≥ 1 objetos (elementos del dominio) y relaciones entre ellos Verdad en la Lógica de Primer Orden Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Las sentencias son verdaderas con respecto a un modelo y una interpretación Un modelo contiene ≥ 1 objetos (elementos del dominio) y relaciones entre ellos La interpretation especifica referencias para sı́mbolos de constante → objetos sı́mbolos de predicado → relaciones sı́mbolos de función → relaciones funcionales Verdad en la Lógica de Primer Orden Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Las sentencias son verdaderas con respecto a un modelo y una interpretación Un modelo contiene ≥ 1 objetos (elementos del dominio) y relaciones entre ellos La interpretation especifica referencias para sı́mbolos de constante → objetos sı́mbolos de predicado → relaciones sı́mbolos de función → relaciones funcionales Una sentencia atómica predicado(termino1 , . . . , terminon ) es verdadera sii los objetos referidos por termino1 , . . . , terminon están en la relación referida por predicado Ejemplo Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere la interpretación en la cual Ricardo → Ricardo Corazón de León John → el malvado Rey John Hermano → la relación de hermandad Ejemplo Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Considere la interpretación en la cual Ricardo → Ricardo Corazón de León John → el malvado Rey John Hermano → la relación de hermandad Bajo esta interpretación, Hermano(Ricardo, John) es verdadera solo en el caso en que Ricardo Corazón de León y el malvado Rey John estén en la relación de hermandad en el modelo Cuantificación Universal Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∀⟨variables⟩⟨sentencia⟩ Cuantificación Universal Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∀⟨variables⟩⟨sentencia⟩ Todos en la Javeriana son inteligentes: ∀x En(x, Javeriana) ⇒ Inteligente(x) Cuantificación Universal Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∀⟨variables⟩⟨sentencia⟩ Todos en la Javeriana son inteligentes: ∀x En(x, Javeriana) ⇒ Inteligente(x) ∀x P es verdadero en un modelo m sii P es verdadero con x siendo cada objeto posible en el modelo Cuantificación Universal Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∀⟨variables⟩⟨sentencia⟩ Todos en la Javeriana son inteligentes: ∀x En(x, Javeriana) ⇒ Inteligente(x) ∀x P es verdadero en un modelo m sii P es verdadero con x siendo cada objeto posible en el modelo En general, es equivalente a la conjunción de instanciaciones de P (En(ReyJohn, Javeriana) ⇒ Inteligente(ReyJohn)) ∧ (En(Ricardo, Javeriana) ⇒ Inteligente(Ricardo)) ∧ (En(Javeriana, Javeriana) ⇒ Inteligente(Javeriana)) ∧ ... Un Error Común a Evadir Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Normalmente, ⇒ es conectivo principal con ∀ Un Error Común a Evadir Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Normalmente, ⇒ es conectivo principal con ∀ Error común: usar ∧ como el conectivo principal con ∀: ∀x En(x, Javeriana) ∧ Inteligente(x) significa “Todos están en la javeriana y todos son inteligentes” Cuantificación Existencial Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃⟨variables⟩⟨sentencia⟩ Cuantificación Existencial Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃⟨variables⟩⟨sentencia⟩ Alguien en MIT es inteligente: ∃x En(x, MIT ) ∧ Inteligente(x) Cuantificación Existencial Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃⟨variables⟩⟨sentencia⟩ Alguien en MIT es inteligente: ∃x En(x, MIT ) ∧ Inteligente(x) ∃x P es verdadero en un modelo m sii P es verdadero con x siendo algún objeto posible en el modelo Cuantificación Existencial Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃⟨variables⟩⟨sentencia⟩ Alguien en MIT es inteligente: ∃x En(x, MIT ) ∧ Inteligente(x) ∃x P es verdadero en un modelo m sii P es verdadero con x siendo algún objeto posible en el modelo En general, es equivalente a la disyunción de instanciaciones de P (En(ReyJohn, MIT ) ∧ Inteligente(ReyJohn)) ∨ (En(Ricardo, MIT ) ∧ Inteligente(Ricardo)) ∨ (En(MIT , MIT ) ∧ Inteligente(MIT )) ∨ ... Otro Error Común a Evadir Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Normalmente, ∧ es conectivo principal con ∃ Otro Error Común a Evadir Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Normalmente, ∧ es conectivo principal con ∃ Error común: usar ⇒ como el conectivo principal con ∃: ∃x En(x, MIT ) ⇒ Inteligente(x) es verdadero si hay alguien que no esté en MIT! Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∀x ∀y es lo mismo que ∀y ∀x (¿por qué?) Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General ∀x ∀y es lo mismo que ∀y ∀x (¿por qué?) Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃x ∃y es lo mismo que ∃y ∃x (¿por qué?) Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General ∀x ∀y es lo mismo que ∀y ∀x (¿por qué?) Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃x ∃y es lo mismo que ∃y ∃x (¿por qué?) ∃x ∀y no es lo mismo que ∀y ∃x Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General ∀x ∀y es lo mismo que ∀y ∀x (¿por qué?) Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃x ∃y es lo mismo que ∃y ∃x (¿por qué?) ∃x ∀y no es lo mismo que ∀y ∃x ∃x ∀y Ama(x, y ) “Existe una persona que ama a todos en el mundo” Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General ∀x ∀y es lo mismo que ∀y ∀x (¿por qué?) Cálculo Proposicional Cálculo de Predicados Formalización de Programas ∃x ∃y es lo mismo que ∃y ∃x (¿por qué?) ∃x ∀y no es lo mismo que ∀y ∃x ∃x ∀y Ama(x, y ) “Existe una persona que ama a todos en el mundo” ∀y ∃x Ama(x, y ) “Todos en el mundo son amados por lo menos por una persona” Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Dualidad de cuantificadores: cada uno puede ser expresado usando el otro Propiedades de los Cuantificadores Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Dualidad de cuantificadores: cada uno puede ser expresado usando el otro ∀x Gusta(x, Helado) ¬∃x ¬Gusta(x, Helado) ∃x Gusta(x, Brocoli) ¬∀x ¬Gusta(x, Brocoli) Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). “Amigo” es simétrico Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). “Amigo” es simétrico ∀x, y Amigo(x, y ) ⇔ Amigo(y , x). Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). Formalización de Programas “Amigo” es simétrico ∀x, y Amigo(x, y ) ⇔ Amigo(y , x). La mamá de uno es un padre femenino de uno Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). “Amigo” es simétrico ∀x, y Amigo(x, y ) ⇔ Amigo(y , x). La mamá de uno es un padre femenino de uno ∀x, y Mama(x, y ) ⇔ (Femenino(x) ∧ Padre(x, y )). Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). “Amigo” es simétrico ∀x, y Amigo(x, y ) ⇔ Amigo(y , x). La mamá de uno es un padre femenino de uno ∀x, y Mama(x, y ) ⇔ (Femenino(x) ∧ Padre(x, y )). Un primo hermano es un hijo de un hermano de un padre Ejemplos Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Los hermanos son amigos ∀x, y Hermano(x, y ) ⇒ Amigo(x, y ). “Amigo” es simétrico ∀x, y Amigo(x, y ) ⇔ Amigo(y , x). La mamá de uno es un padre femenino de uno ∀x, y Mama(x, y ) ⇔ (Femenino(x) ∧ Padre(x, y )). Un primo hermano es un hijo de un hermano de un padre ∀x, y PrimoHermano(x, y ) ⇔ ∃(p, ps) Padre(p, x) ∧ Hermano(ps, p) ∧ Padre(ps, y ) Igualdad Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas termino1 = termino2 es verdadero bajo una interpretación dada si y solo si termino1 y termino2 se refieren al mismo objeto Igualdad Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas termino1 = termino2 es verdadero bajo una interpretación dada si y solo si termino1 y termino2 se refieren al mismo objeto E.g., 1 = 2 y ∀x × (Sqrt(x), Sqrt(x)) = x son satisfacibles 2 = 2 es válido Igualdad Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas termino1 = termino2 es verdadero bajo una interpretación dada si y solo si termino1 y termino2 se refieren al mismo objeto E.g., 1 = 2 y ∀x × (Sqrt(x), Sqrt(x)) = x son satisfacibles 2 = 2 es válido E.g., la definición de Hermano en términos de Padre: ∀x, y Hermano(x, y ) ⇔ [¬(x = y ) ∧ ∃m, f ¬(m = f ) ∧ Padre(m, x) ∧ Padre(f , x) ∧ Padre(m, y ) ∧ Padre(f , y )] Reducción a Inferencia Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Suponga que la KB contiene solo lo siguiente: ∀x Rey (x) ∧ Avaro(x) ⇒ Malvado(x) Rey (John) Avaro(John) Hermano(Ricardo, John) Reducción a Inferencia Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Suponga que la KB contiene solo lo siguiente: ∀x Rey (x) ∧ Avaro(x) ⇒ Malvado(x) Rey (John) Avaro(John) Hermano(Ricardo, John) Instanciando la sentencia universal en todas las posibles formas, se tiene Rey (John) ∧ Avaro(John) ⇒ Malvado(John) Rey (Ricardo) ∧ Avaro(Ricardo) ⇒ Malvado(Ricardo) Rey (John) Avaro(John) Hermano(Ricardo, John) Reducción a Inferencia Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas La nueva KB está proposicionalizada: sı́mbolos de proposición son Rey (John), Avaro(John), Malvado(John), Rey (Ricardo) etc. Reducción a Inferencia Proposicional Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas La nueva KB está proposicionalizada: sı́mbolos de proposición son Rey (John), Avaro(John), Malvado(John), Rey (Ricardo) etc. Problema: La proposicionalización parece generar cantidades irrelevantes de sentencias. E.g. ∀x Rey (x) ∧ Avaro(x) ⇒ Malvado(x) Rey (John) ∀y Avaro(y ) Hermano(Ricardo, John) Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ p Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) q Conoce(Mao, Pat) Conoce(y , Jime) Conoce(y , Madre(y )) Conoce(x, Jime) θ Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ p Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) q Conoce(Mao, Pat) Conoce(y , Jime) Conoce(y , Madre(y )) Conoce(x, Jime) θ {x/Pat} Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ p Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) q Conoce(Mao, Pat) Conoce(y , Jime) Conoce(y , Madre(y )) Conoce(x, Jime) θ {x/Pat} {x/Jime, y /Mao} Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ p Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) q Conoce(Mao, Pat) Conoce(y , Jime) Conoce(y , Madre(y )) Conoce(x, Jime) θ {x/Pat} {x/Jime, y /Mao} {y /Mao, x/Madre(Mao)} Unificación Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Se puede obtener la inferencia inmediatamente si se encuentra una sustitución θ tal que Rey (x) y Avaro(x) corresponda con Rey (John) y Avaro(y ) θ = {x/John, y /John} funciona Unify(α, β) = θ if αθ = βθ p Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) Conoce(Mao, x) q Conoce(Mao, Pat) Conoce(y , Jime) Conoce(y , Madre(y )) Conoce(x, Jime) θ {x/Pat} {x/Jime, y /Mao} {y /Mao, x/Madre(Mao)} falla Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas La ley dice que es un crimen para un Estadounidense vender armas a naciones hostiles. Corea del Sur, enemigo de Estados Unidos, tiene algunos misiles, y todos sus misiles les fueron vendidos por el Coronel West, quien es Estadounidense. Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas La ley dice que es un crimen para un Estadounidense vender armas a naciones hostiles. Corea del Sur, enemigo de Estados Unidos, tiene algunos misiles, y todos sus misiles les fueron vendidos por el Coronel West, quien es Estadounidense. Pruebe que el Col. West es un criminal Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Estadounidense(x) ∧ Arma(y ) ∧ Vende(x, y , z) ∧ Hostil(z) ⇒ Criminal(x) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Formalización de Programas Estadounidense(x) ∧ Arma(y ) ∧ Vende(x, y , z) ∧ Hostil(z) ⇒ Criminal(x) Corea del sur . . . tiene algunos misiles, i.e., ∃ x Tiene(Corea del sur , x) ∧ Misil(x): Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Estadounidense(x) ∧ Arma(y ) ∧ Vende(x, y , z) ∧ Hostil(z) ⇒ Criminal(x) Corea del sur . . . tiene algunos misiles, i.e., ∃ x Tiene(Corea del sur , x) ∧ Misil(x): Tiene(Corea del sur , M1 ) y Misil(M1 ) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Estadounidense(x) ∧ Arma(y ) ∧ Vende(x, y , z) ∧ Hostil(z) ⇒ Criminal(x) Corea del sur . . . tiene algunos misiles, i.e., ∃ x Tiene(Corea del sur , x) ∧ Misil(x): Tiene(Corea del sur , M1 ) y Misil(M1 ) . . . todos sus misiles les fueron vendidos por el Coronel West Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas . . . es un crimen para un Estadounidense vender armas a naciones hostiles: Estadounidense(x) ∧ Arma(y ) ∧ Vende(x, y , z) ∧ Hostil(z) ⇒ Criminal(x) Corea del sur . . . tiene algunos misiles, i.e., ∃ x Tiene(Corea del sur , x) ∧ Misil(x): Tiene(Corea del sur , M1 ) y Misil(M1 ) . . . todos sus misiles les fueron vendidos por el Coronel West ∀x Misil(x) ∧ Tiene(Corea del sur , x) ⇒ Vende(West, x, Corea del sur ) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Enemigo(x, Estados Unidos) ⇒ Hostil(x) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Enemigo(x, Estados Unidos) ⇒ Hostil(x) West, quien es un Estadounidense . . . Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Enemigo(x, Estados Unidos) ⇒ Hostil(x) West, quien es un Estadounidense . . . Estadounidense(West) Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Enemigo(x, Estados Unidos) ⇒ Hostil(x) West, quien es un Estadounidense . . . Estadounidense(West) El pais Corea del sur, un enemigo de Estados Unidos . . . Ejemplo de una Base de Conocimiento Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Misiles son armas: Misil(x) ⇒ Arma(x) Un enemigo de Estados Unidos cuenta como “hostil”: Enemigo(x, Estados Unidos) ⇒ Hostil(x) West, quien es un Estadounidense . . . Estadounidense(West) El pais Corea del sur, un enemigo de Estados Unidos . . . Enemigo(Corea del sur , Estados Unidos) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Frances, Primavera2001) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Frances, Primavera2001) Todo estudiantes que toma Francés lo aprueba. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Frances, Primavera2001) Todo estudiantes que toma Francés lo aprueba. ∀x, s Estudiante(x) ∧ Toma(x, Frances, s) ⇒ Aprueba(x, Frances, s) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Frances, Primavera2001) Todo estudiantes que toma Francés lo aprueba. ∀x, s Estudiante(x) ∧ Toma(x, Frances, s) ⇒ Aprueba(x, Frances, s) Solo un estudiante tomó Griego en la primavera de 2001. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Algunos estudiantes tomaron Francés en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Frances, Primavera2001) Todo estudiantes que toma Francés lo aprueba. ∀x, s Estudiante(x) ∧ Toma(x, Frances, s) ⇒ Aprueba(x, Frances, s) Solo un estudiante tomó Griego en la primavera de 2001. ∃x Estudiante(x) ∧ Toma(x, Griego, Primavera2001) ∧ ∀y y ≠ x ⇒ ¬Toma(y , Griego, Primavera2001) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. ∀x Persona(x) ∧ (∃y , z Poliza(y ) ∧ Compra(x, y , z)) ⇒ Inteligente(x) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. ∀x Persona(x) ∧ (∃y , z Poliza(y ) ∧ Compra(x, y , z)) ⇒ Inteligente(x) Ninguna persona compra un póliza cara. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. ∀x Persona(x) ∧ (∃y , z Poliza(y ) ∧ Compra(x, y , z)) ⇒ Inteligente(x) Ninguna persona compra un póliza cara. ∀x, y , z Persona(x) ∧ Poliza(y ) ∧ Cara(y ) ⇒ ¬Compra(x, y , z) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. ∀x Persona(x) ∧ (∃y , z Poliza(y ) ∧ Compra(x, y , z)) ⇒ Inteligente(x) Ninguna persona compra un póliza cara. ∀x, y , z Persona(x) ∧ Poliza(y ) ∧ Cara(y ) ⇒ ¬Compra(x, y , z) Existe un agente que vende pólizas solo a personas que no están aseguradas. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Toda persona que compra una póliza de seguros es inteligente. ∀x Persona(x) ∧ (∃y , z Poliza(y ) ∧ Compra(x, y , z)) ⇒ Inteligente(x) Ninguna persona compra un póliza cara. ∀x, y , z Persona(x) ∧ Poliza(y ) ∧ Cara(y ) ⇒ ¬Compra(x, y , z) Existe un agente que vende pólizas solo a personas que no están aseguradas. ∃x Agente(x) ∧ ∀y , z Poliza(y ) ∧ Vende(x, y , z) ⇒ (Persona(z) ∧ ¬Asegurada(z)) Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Los polı́ticos pueden mentir a algunos todo el tiempo, y pueden mentir a todos algún tiempo, pero no pueden mentir a todos todo el tiempo. Ejercicios Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Represente las siguientes sentencias en la lógica de primer orden. Los polı́ticos pueden mentir a algunos todo el tiempo, y pueden mentir a todos algún tiempo, pero no pueden mentir a todos todo el tiempo. ∀x Politico(x) ⇒ (∃y ∀t Persona(y ) Mentir (x, y , t))∧ (existst∀y Persona(y ) ⇒ Mentir (x, y , t))∧ ¬(∀t∀y Persona(y ) ⇒ Mentir (x, y , t)) Formalización de Programas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Un programa es una secuencia de sı́mbolos que pueden ser analizados de acuerdo a unas reglas sintácticas, y que expresan un significado de acuerdo a la interpretación de los elementos atómicos y conectivos del lenguaje. Los elementos atómicos y conectivos son llamados asignación (statements). Una asignación en un lenguaje de programación puede ser considerado como una función que transforma el estado de una computación. Formalización de Programas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: Si las variables (x, y ) tienen los valores (8, 7) en un estado s, entonces el resultado de ejecutar la siguiente asignación: x := 2*y + 1 es el estado s ′ en el cual (x, y ) = (15, 7) Formalización de Programas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: Si las variables (x, y ) tienen los valores (8, 7) en un estado s, entonces el resultado de ejecutar la siguiente asignación: x := 2*y + 1 es el estado s ′ en el cual (x, y ) = (15, 7) Queremos razonar sobre los estados de una computación Formalización de Programas Gerardo M. Sarria M. Lógica en General Entonces, en vez de decir que Cálculo Proposicional Cálculo de Predicados x := 2*y + 1 transforma el estado Formalización de Programas (x, y ) a (x ′ = 2y + 1, y ′ = y ) queremos encontrar los predicados p(x, y ), p ′ (x ′ , y ′ ) tal que si p(x, y ) es cierto en el estado s, entonces p ′ (x ′ , y ′ ) es cierto después de ejecutar la asignación. Formalización de Programas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: Para x := 2*y + 1, pruebe que x ≤ 7 después de ejecutar la asignación. Si 2y + 1 ≤ 7 es verdad antes de la ejecución, se puede deducir que y ≤ 3. Formalización de Programas Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplo: Para x := 2*y + 1, pruebe que x ≤ 7 después de ejecutar la asignación. Si 2y + 1 ≤ 7 es verdad antes de la ejecución, se puede deducir que y ≤ 3. En general, una asignación sustituye el valor de una expresión en una de las variables. Si un predicado ya es true usando la sustitución, el predicado será true (sin sustitución) siguiendo la ejecución. Precondición más débil Gerardo M. Sarria M. Lógica en General Se caracteriza el estado de un programa listando los valores de todas las variables en el programa. Cálculo Proposicional Cálculo de Predicados Se define la precondición P de un programa S como el estado inicial de S, y la postcondición Q como el estado final de S: Formalización de Programas {P} S {Q} Precondición más débil Gerardo M. Sarria M. Lógica en General Se caracteriza el estado de un programa listando los valores de todas las variables en el programa. Cálculo Proposicional Cálculo de Predicados Se define la precondición P de un programa S como el estado inicial de S, y la postcondición Q como el estado final de S: Formalización de Programas {P} S {Q} El objetivo es encontrar aquellos estados I , tal que el programa iniciando en un estado i ∈ I , garantice terminar en un estado que cumpla Q. Este conjunto I es definido por la precondición más débil (weakest precondition o wp) del programa y la postcondición. Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Si un programa S comienza en un estado que satisface wp(S, Q), se garantiza que terminará en un estado que satisfaga Q. Todos los programas satisfacen true Ningún programa satisface false Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Si un programa S comienza en un estado que satisface wp(S, Q), se garantiza que terminará en un estado que satisfaga Q. Todos los programas satisfacen true Ningún programa satisface false Ley del milagro excluido: ∀S, wp(S, false) = false Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Para cualquier programa S y postcondiciones Q, R tal que Q → R, wp(S, Q) → wp(S, R) Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Para cualquier programa S y postcondiciones Q, R tal que Q → R, wp(S, Q) → wp(S, R) Para una asignación simple: wp(⟦x ∶= E⟧, Q) = Q[x = E ] Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Ejemplos: wp(⟦a ∶= 7⟧, a = 7) = (7 = 7) = true Cálculo de Predicados Formalización de Programas wp(⟦a ∶= 7⟧, a = 6) = (7 = 6) = false wp(⟦a ∶= 7⟧, b = c) = (b = c) wp(⟦a ∶= 2 ∗ b + 1⟧, a = 13) = (2 × b + 1 = 7) = (b = 6) wp(⟦a ∶= a − b⟧, a > b) = (a − b > b) = (a > 2 × b) Precondición más débil Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Para secuencias de expresiones: wp(⟦S1 ; S2 ⟧, Q) = wp(S1 , wp(S2 , Q)) Precondición más débil Gerardo M. Sarria M. Para secuencias de expresiones: wp(⟦S1 ; S2 ⟧, Q) = wp(S1 , wp(S2 , Q)) Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Ejemplos: wp(⟦a ∶= a + b; b ∶= a ∗ b⟧, b > a) = wp(⟦a ∶= a + b⟧, wp(⟦b ∶= a ∗ b⟧, b > a)) wp(⟦b ∶= a ∗ b⟧, b > a) = (a ∗ b > a) = (b > 1 ∧ a ≥ 0) ∨ (b < 1 ∧ a ≤ 0) wp(⟦a ∶= a + b⟧, (b > 1 ∧ a ≥ 0) ∨ (b < 1 ∧ a ≤ 0)) = (b > 1 ∧ (a + b) ≥ 0) ∨ (b < 1 ∧ (a + b) ≤ 0) = (b > 1 ∧ a ≥ −b) ∨ (b < 1 ∧ a ≤ −b) Gerardo M. Sarria M. Lógica en General Cálculo Proposicional Cálculo de Predicados Formalización de Programas Fin de la Presentación