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 |