Está en la página 1de 15

Programación lógica funcional Unidad IV Lógica de primer orden en Prolog

1
Ing. Héctor Sánchez Castro Programación lógica funcional
Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Habitualmente, programar una computadora significa dar una sucesión de tareas que, al
ejecutarlas paso a paso, permiten resolver un problema concreto.

Sin embargo, el proceso que se sigue en la programación lógica es completamente


distinto: un programa en un lenguaje de programación lógica está formado por un
conjunto de hechos, junto con un conjunto de condiciones que debe verificar la solución...
el computadora, usando un motor de inferencia, debe "deducir" la solución a partir de los
hechos y las condiciones dadas.

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Prolog

Prolog (del francés, PROgrammation en LOGique) fue el primer lenguaje de


programación basado en el paradigma de la programación lógica. Se implementó por
primera vez a principios de los años setenta en la Universidad de Marsella (Francia), por
un equipo dirigido por A. Colmeraeur y utilizando resultados de R.

Kowalski (Universidad de Edimburgo). Aunque con ciertas dificultades iniciales, debido


principalmente a la novedad del paradigma y a la escasa eficiencia de las
implementaciones disponibles, el lenguaje se fue expandiendo rápidamente, sobre todo
en Europa y en Japón (en este último paíıs la programación lógica se incluyó como parte
central del proyecto de ordenadores de quinta generación de los años ochenta) y en 1995
se normaliza con el correspondiente estándar ISO.

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Prolog

la programación en Prolog consiste simplemente en:

 Declarar hechos sobre los objetos y sus relaciones,


 Definir reglas sobre dichos objetos y relaciones, y
 Hacer preguntas.

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Los elementos de un programa en Prolog


Los hechos
Un hecho es un predicado (relación) entre objetos.
Su sintaxis en Prolog es relación(objeto, objeto, ...).
Ha de tenerse en cuenta lo siguiente:
 Los nombres de las relaciones deben comenzar con una letra minúscula.
 Los objetos se escriben separados por comas y encerrados entre paréntesis.
 Al final del hecho debe ir un punto.
Por ejemplo, un hecho es:
edad(juan,27).

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog

Lógica de primer orden


Hechos

Árbol genealógico

Consultas

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad II Lógica de primer orden en Prolog

Consultas

Árbol genealógico

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Las reglas

Las reglas funcionan como las fórmulas condicionales habituales en lógica. Reflejan que
la verdad de un hecho depende de la verdad de otro hecho o grupo de hechos. Consta
de una cabeza y un cuerpo, donde este último puede estar formado por varios hechos
(también llamados objetivos). Su sintaxis general es:
cabeza :- objetivo 1, objetivo 2, ..., objetivo n.
𝑎 →𝑏 …….. 𝑏 → 𝑎 (Prolog)

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Formalmente, desde un punto de vista lógico, se interpretaría de la siguiente forma:

objetivo1∧⋯∧objetivon → cabezaobjetivo1∧⋯∧objetivon → cabeza

Los objetivos van separados por comas (que representan conjunciones) y al final debe ir
un punto.

Por ejemplo:

mayor_de_edad(X) :- edad(X,E), E>18.

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog

Árbol genealógico Consultas

Para demostrar si Clara es bisabuela de Jaime, utilizaríamos


la siguiente conjunción de objetivos:
?- progenitor(clara,X), progenitor(X,Y), progenitor(Y,jaime).
X = jose,
Y = patricia.

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Las reglas

abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y).

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Las reglas

tio(X,Y):- progenitor(Z,Y), progenitor(V,Z), progenitor(V,X).

Ing. Héctor Sánchez Castro Programación lógica funcional


Programación lógica funcional Unidad IV Lógica de primer orden en Prolog
Lógica de primer orden

Las reglas

Ing. Héctor Sánchez Castro Programación lógica funcional

También podría gustarte