Programación Lógica Contenidos
2. Fundamentos de la Programación Lógica 2.1 Introducción a la representación en Lógica. 2.2 Representación mediante Cláusulas. 2.3 Unificación y sustitución. 2.4 Resolución por Refutación. 2.5 Sistemas de Deducción o No-Resolución. 2.6 Programación Lógica y Prolog. 2.7 Bibliografía básica: Principles of Artificial Intelligence, N.J. Nilsson, Springer-Verlag, 1982. From Logic Programming to Prolog, K.R. Apt, Prentice-Hall, 1997.
Programación Lógica Objetivos:
Presentar la lógica de predicados de primer orden como formalismo de representación del conocimiento e inferencia.
Estudiar los métodos de inferencia automáticos aplicables a la lógica de predicados, esencialmente el método de resolución por refutación.
Programación Lógica Representación e inferencia en la lógica de predicados Idea: La lógica como sistema de representación del conocimiento y de obtención de consecuencias (control) Cálculo de predicados de primer orden Fórmulas Fórmulas atómicas Conectores
Programación Lógica autor(quijote, cervantes)
escritor(cervantes) Predicado: Un predicado es un símbolo cuyo valor se encuentra en el dominio lógico (verdadero o falso) y representa alguna cualidad semántica, en un cierto contexto, acerca de las relaciones entre objetos o entidades Fórmulas atómicas Términos autor(quijote, Quién) autor(quijote, mejor(novelista, españa))
Programación Lógica Constante:
Representa un término con un valor semántico determinado
Fórmulas atómica :: Predicado | Predicado(Términos)
Términos :: Término | Término, Términos
Término :: Variable | Constante | Functor
Functor :: NombreFunctor(Términos)
Variable:
Representa un término cuyo valor no está determinado inicialmente y su dominio de definición debe coincidir con el de los términos constantes
Functor:
Es un símbolo que posee valor en el dominio de las variables y constantes, pero que no es ni una variable ni una constante.
Normas léxicas:
Las variables siempre empiezan por mayúscula
las constantes por minúscula
Programación Lógica Conectores
Permiten construir fórmulas complejas a partir de fórmulas o expresiones atómicas
Negación : ? (~) Disyunción : ? (OR) Conjunción : ? (AND) Implicación : ? (?) Equivalencia : ?
Programación Lógica Negación: Genera una fórmula que posee valores lógicos complementarios a los de la fórmula sobre la que se aplica. Estrictamente no es un conector, pues no conecta dos fórmulas sino que transforma una.
? autor(hamlet, cervantes)
Disyunción: Genera una fórmula cuyo valor lógico es el OR de los valores de las dos fórmulas que conecta.
estado(bombilla, encendida) ? estado(bombilla, apagada)
Conjunción: Genera una fórmula cuyo valor lógico es el AND de los valores de las dos fórmulas que conecta.
color(coche, rojo) ? color(camisa, azul)
Programación Lógica Implicación: Genera una fórmula compuesta no-simétrica que es cierta siempre, salvo cuando el antecedente es cierto y el consecuente falso.
p ? q es equivalente a ?p ? q
p q p ? q ?p ?p ? q
0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1
está(cielo, azul) ? ? lloverá(hoy)
? está(cielo, azul) ? ? lloverá(hoy)
Programación Lógica Equivalencia o doble implicación: Genera una fórmula que es cierta sólo si las dos componentes poseen idéntico valor.
p ? q es equivalente a (p ? q) ? (q ? p)
p q p ? q q ? p (p ? q) ? (q ? p)
0 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1
llueve(hoy) ? está(cielo, nublado)
Programación Lógica Equivalencias
Complemento: p ? ? p ? 1 Doble negación: ? ( ? p ) ? p Conmutativa: p ? q ? q ? p p ? q ? q ? p
Distributiva: p ? (q ? r) ? (p ? q) ? (p ? r) p ? (q ? r) ? (p ? q) ? (p ? r)
Asociativa: p ? (q ? r) ? (p ? q) ? r p ? (q ? r) ? (p ? q) ? r
Leyes de De Morgan: ? (p ? q) ? ? p ? ? q ? (p ? q) ? ? p ? ? q
Ley del contrapositivo: p ? q ? ? q ? ? p
Programación Lógica Cuantificadores Establecen el ámbito de existencia de las variables Cuantificador Universal (?):
Cuando acompaña a una variable X establece que la fórmula es siempre válida para cada valor posible de la variable X. La variable X se dice entonces cuantificada universalmente.
Todo cuerpo con masa cae
(?X) ( [cuerpo(X) ? posee(masa, X)] ? cae(X) )
Programación Lógica Cuantificadores Establecen el ámbito de existencia de las variables Cuantificador Existencial (?):
Establece que como mínimo existe un valor de la variable cuantificada que hace cierta la fórmula. La variable se dice cuantificada existencialmente.
Alguién descubrió la penicilina
(? X) ( descubrió( X, penicilina )
Página siguiente |