siguiente anterior arriba atrasadelante (solo si previamente se ha ido
atras)

A.5.3. Diferencias semánticas

La semántica lógica es declarativa: el significado de las sentencias es que definen modelos. Pero estamos suponiendo que los programas en Prolog se ejecutan sobre una máquina convencional, siguiendo el modelo procesal ya descrito. Su semántica es, por consiguiente, procedimental. El ideal sería que ambas coincidiesen, es decir, que aplicando el modelo procesal de Prolog se obtuviese un modelo del programa, pero no es siempre así. Por ejemplo, las cuatro versiones de «jefes» y «superiores» estudiadas en el apartado A.3.3 tienen el mismo significado declarativo: las cuatro comparten el modelo (mínimo):

I(jefe) = {(Ana,Eva), (Eva,Pepe), (Pepe,Paco)}

I(superior) = {(Ana,Eva), (Eva,Pepe), (Pepe,Paco), (Ana,Pepe),
(Ana,Paco), (Eva,Paco)}

Sin embargo, con la cuarta versión no se obtiene este modelo (no se obtiene nada).

La relación entre la semántica de Prolog y la semántica declarativa es un tema que requiere un desarrollo matemático de cierta envergadura (especialmente con las complicaciones que surgen al considerar el uso de funciones y de negación), y remitimos una vez más al lector a la bibliografía. Pero sí hay dos aspectos importantes que vamos a presentar de manera informal.


siguiente
anterior arriba atrasadelante (sólo si previamente se ha ido atras)


algunos derechos reservados DIT-ETSIT-UPM
Portada