domingo, 2 de junio de 2019

Semántica de los programas lógicos


La semántica da significado a los programas y nos permite describir formalmente lo que calculan. Hay tres maneras bien conocidas de dar significado o semántica a los programas lógicos: la semántica declarativa, la semántica operacional y la semántica denotacional (comúnmente llamada semántica de punto fijo). En esta sección presentamos algunas nociones y teoremas básicos relacionados a la semántica de los programas lógicos definidos.
Definición 2 : Sea L un lenguaje de primer orden.
1.        El universo de Herbrand de L, denotado HL, es el conjunto de todos los términos de base que pueden formarse a partir de las constantes y los símbolos de función que ocurren en L.
Ejemplo Sea L = {0,suc,nat} donde 0 es una constante, suc es un símbolo de función de aridad 1 y nat es un predicado de aridad 1. En los próximos tres ejemplos nos referiremos a este lenguaje. El universo de Herbrand de L es:
HL = {0,suc(0),suc(suc(0),...,suci(0),...}
2.        La base de Herbrand de L, denotada BL, es el conjunto de todos los ´átomos que pueden formarse a partir de los predicados que ocurren en L y los términos en HL.
              Ejemplo       La base de Herbrand de L es:
BL = {nat(0),nat(suc(0)),...,nat(suci(0)),...}.
3.        Una estructura A para L es una estructura de Herbrand si su dominio es HL y, para cada símbolo de función f de L y elementos t1 ...,tn de A, fA(t1,...,tn) = f(t1,...,tn). Para cada constante c en L, cA = c.
              Ejemplo       Una estructura de Herbrand para L es:
A = hHL,0A,sucA,BLi, donde 0A = 0 y sucA(t) = suc(t) para todo t ∈ HL.
4.        Si Γ un conjunto de sentencias, un modelo de Herbrand de Γ es una estructura de Herbrand que es un modelo para Γ. Debido a que en los modelos de Herbrand la interpretación de las constantes y los símbolos de función son fijas, es posible identificar un modelo de Herbrand con un subconjunto de la base de Herbrand.
Consideremos un programa lógico P. P induce un lenguaje de primer orden donde las constantes, los símbolos de función y los predicados son, respectivamente, las constantes, los símbolos de función y los predicados que ocurren en P. Entonces, podemos hablar del universo de Herbrand de P, denotado HP. Asimismo, podemos hablar de la base de Herbrand de P, denotada BP.
Ejemplo        Sea P el siguiente programa:
p(a)p(b)q(a)r(f(x))p(x),q(x)
El universo y la base de Herbrand de P son, respectivamente:
HP = {a,b,,f(a),f(b),f(f(a)),f(f(b)),f(f(f(a))),...}
BP = {p(a),p(b),q(a),q(b),p(f(a)),p(f(b)),q(f(a)),p(f(b)),p(f(f(a))), p(f(f(b))),q(f(f(a)),q(f(f(b))...}
Semántica declarativa. Desde el punto de vista lógico, un programa P puede verse como una teoría lógica formada por las cláusulas del programa. Los modelos de Herbrand de esta teor´ıa son considerados los modelos del programa P. Por ejemplo, la base de Herbrand del programa P, BP, es un modelo de P.
Entre las estructuras de Herbrand que son modelos de P, se destaca el que contiene exactamente los ´átomos que son consecuencia lógica de P. Este modelo corresponde al significado “entendido” o “estándar” del programa y es llamado el modelo mínimo de P, MP. El modelo MP se define como sigue:
MP = {A BP : P |= A}
Ejemplo         El modelo mínimo del programa P es:
MP = {p(a),p(b),q(a),r(f(a))}
Semántica operacional. Esta definida por el proceso de inferencia utilizado para probar que un objetivo puede ser derivado del programa. En la próxima sección estudiaremos en detalle este punto.
Semántica denotacional. Esta semántica asigna significado a un programa asociándole una función sobre el dominio calculado por el programa. El significado viene dado entonces por el punto fijo de la función, si existe.

4.1 INTRODUCCIÓN A LA PROGRAMACIÓN LÓGICA

La Programación Lógica estudia el uso de la lógica para el planteamiento de problemas y el control sobre las reglas de inferencia para alcanzar la solución automática.

La Programación Lógica, junto con la funcional, forma parte de lo que se conoce como Programación Declarativa, es decir la programación consiste en indicar como resolver un problema mediante sentencias, en la Programación Lógica, se trabaja en una forma descriptiva, estableciendo relaciones entre entidades, indicando no como, sino que hacer, entonces se dice que la idea esencial de la Programación Lógica es
Programa= lógica + control
Lógica (programador): hechos y reglas para representar conocimiento
Control (interprete): deducción lógica para dar respuestas (soluciones)
La programación lógica intenta resolver lo siguiente:
Dado un problema S, saber si la afirmación A es solución o no del problema o en qué casos lo es. Además queremos que los métodos sean implantados en maquinas de forma que la resolución del problema se haga de forma automática.
La programación lógica: construye base de conocimientos mediante reglas y hechos
*      Regla: implicación o inferencia lógica que deduce nuevo conocimiento, la regla permite definir nuevas relaciones a partir de otras ya existentes
Ej.:
Mortal (x): – humano(x)
x es mortal si x es humano
*      Hecho: declaración, cláusula o proposición cierta o falsa, el hecho establece una relación entre objetos y es la forma más sencilla de sentencia
Ej.:
Humano (Sócrates); Sócrates es humano
Ama (Juan, María) ; ama Juan a María
*      Consulta: se especifica el problema, la proposición a demostrar o el objetivo Partiendo de que los humanos son mortales y de que Sócrates es humano, deducimos que
Sócrates es mortal

Mortal (x): – humano(x);- los humanos son mortales; regla
Humano (Sócrates); Sócrates es humanos; hecho
Sócrates es mortal ; consulta