Vous êtes sur la page 1sur 38

Unidad #4 Modelo de

Programacin Lgica
Equipo:
Sergio Oswaldo Martnez Gutirrez
Liliana Abigail Garca Chvez
Arylu Juana Mara Hernndez
Rafael Abraham Ramos Gutirrez
Sergio Alberto Martnez de la Fuente
ngel Gerardo Quezada Snchez
4.1 Introduccin al
modelo de
programacin lgica
Laprogramacinlgica

La programacin lgica es un
paradigma de programacin basado en
lalgica de primer orden.

Todosloshombressonmortales

Scratesesunhombre

Scratesesmortal
Se trata de un tipo de programacin
declarativa, es decir, no se indica cmo
se hacen las cosas, sino qu cosas
hacer. A partir de eso, el motor de
ejecucin decide cmo hacerlo.
En un programa lgico generalmente
se definen un hechos y reglas, lo que
se suele llamarbase de conocimiento,
y a partir de ellos, se pueden obtener
respuestas
4.2 Semntica de los
programas lgicos.
Semntica de Prolog

El
programa Prolog se compone de unos
hechos (datos) y un conjunto de reglas,
es decir, relaciones entre objetos de la
base de datos.

Tieneuna sintaxis y semntica simple.


Solo busca relaciones entre los objetos
creados, las variables y las listas, que
son estructuras bsicas.
Aspectos Importantes
Los comentarios se pone con el smbolo % al principio
% Esto es un comentario
OBJETOS DE DATOS
Tipo de Datos primitivos: variables y constantes.
Enteros
Reales
Caracteres
Los identificadores con la primera minscula
representan hechos , los que van con la primera
mayscula son variables.
Tipos de datos estructurados:
tomos: Constantes y variable de cadena.
Listas, representadas entre [ ].

Tipos definidos por el usuario. Las reglas para definir


relaciones pueden actuar como tipos de usuario.
Reglas
Las reglas se utilizan en Prolog para significar que un hecho
depende de uno o mas hechos.
Una reglas consiste en una cabeza y un cuerpo, unidos por el
signo :-.
La cabeza esta formada por un nico hecho.
El cuerpo puede ser uno o mas hechos separados por una
coma que acta como el y lgico.
Las reglas finalizan con un punto ..
4.3 Representacin
Clausada del conocimiento
Representa el conocimiento
mediante clausulas permite a los
ordenadores sacar conclusiones de
conocimiento previamente
almacenados.
Que es una clausula?
Es una disyuncin de cualquier numero de formulas
atmicas afirmadas o negadas.

Tipos de Clausulas
Hechos
Reglas
Consultas
4.4. Consulta de una
base de clusulas
Un programa en PROLOG define una coleccin de relaciones. Cada
relacin es definida por una o ms clusulas.
- INTERPRETACIN DE UNA CLUSULA EN PROLOG.
:- Es equivalente "Si" o No".
, Es equivalente "AND".
; Es equivalente a "OR"
Ejemplo
Para especificar la relacin el
padre de X es Y,
se crea una base de conocimiento
conhechos expresados
mediante un
predicado padre(X,Y)
de la siguiente manera:

padre(juan,pedro).
padre(jos,pedro).
padre(mara,pedro).
padre(pedro,pablo).
padre(ana,alberto).
...
Definicin de Consulta en Prolog

Para plantear una consulta en Prolog, el usuario simplemente prueba


sta, para ver si sta es verdadera. Si la prueba es positiva, Prolog
contesta: YES, de lo contrario responde NO, o tambin se usa TRUE o
FALSE, dependiendo del programa que se use para la programacin
del lenguaje
4.5. Espacios de
bsqueda
4.6. Programacin
lgica con nmeros,
listas y arboles
Prolog cuenta con operadores para la unificacin y comparacin, sea con
evaluacin o sea simblica, como los siguientes:

X is Y % unificacin con evaluacin


X = Y % unificacin simblica
X =:= Y % comparacin con evaluacin
X == Y % comparacin simblica
Programacin lgica con Nmeros
En prolog los objetos numricos pueden corresponder a tipos integer
o float. Para realizar operaciones numricas, se tiene el predicado is,
que se comporta como una asignacin en un lenguaje imperativo.
As,el objetivo X is <expression> ser verdadero cuando X unifique
con el resultado numrico de evaluar <expresin>
Programacin lgica con Listas
La representacin de hechos simples no
es lo comn en la clasificacin de
elementos , sino que se agrupan los
elementos de un mismo tipo en una lista.

Las listas son colecciones de elementos


en prolog.
Una lista se divide en dos partes:
Cabeza: Es el primer elemento de la lista
Cola: Es una lista con el resto de los
elementos de la lista.La cabeza y la cola
de una lista se separan con el smbolo |
Programacin Lgica con rboles

Es ms fcil entender la forma de una estructura complicada si la


escribimos como un rbol en el que el nombre es un nodo y los
componentes son las ramas.
4.7. Control de
Bsqueda
En Programas Lgicos
Prolog incorpora un control de bsqueda en programas lgicos
que recorre las clusulas de Horn para inferir relaciones.

Este control de bsqueda corresponde matemticamente


a un demostrador de teoremas.

Una clusula de Horn es un hecho universal en el que la sintaxis


es:

<fact> (hecho) = <term> (termino)

<fact> = <term> - <terms>

<terms> = <term> | <term> , <terms>(condiciones)

<term> = <number>
| <variable> empieza con mayscula
| <atom> empieza con minscula
| <atom> ( <terms> ) trmino compuesto

<query> (consulta) = <terms> Unificacin


Cuando Prolog resuelve una consulta como padre(Pedro,X), el
motor busca
en las tuplas conocidas de la relacin padre: (Pedro, Juan), (Juan,
Diego)
y (Pedro, Ana), tratando de hacer una correspondencia con
(Pedro,X).
Esto se llama unificacin.

- Unificacin de (Pedro,X) con (Pedro, juan): s, es vlida. Pedro se


unifica
trivialmente con Pedro, pero para que X se unifique con Juan, se
requiere
que X=Juan.

- Unificacin de (Pedro,X) con (Juan, Diego): no. pedro no puede


unificarse
con Juan.

- Unificacin de (Pedro,X) con (pedro, Ana): s. Pero con la


restriccin
4.8. Manipulacin
De Trminos
Manipulacin de trminos en Prolog

El predicado factor/3 es uno de los ms tiles entre la biblioteca


estndar Prolog. Este predicado permite extraer el factor y la
calidad de un trmino cualquiera.
Pero, al ser reversible, tambin permite construir nuevos trminos
a partir del factor y la calidad deseada.

Los modos de uso son:

factor(+Termino,-Factor,-Calidad).
factor(-Termino,+Factor,+Calidad).

El siguiente ejemplo muestra como se extrae un factor y un


termino:
?- factor(termino),Factor,Calidad). Calidad= 2, ya que factor =
termino ? Yes.
Ahora veremos como crear un nuevo
trmino.

Sus argumentos siempre sern nuevas


variables libres:

?- factor(NuevoTermino,prueba,4).
Nuevo Termin = prueba(_,_,_,_) ?
yes
?-
4.9. Predicados
Mitolgicos
Lospredicadosson los elementos ejecutables
en Prolog. En muchos sentidos se asemejan a
los procedimientos o funciones tpicos de los
lenguajes imperativos.
Una llamada concreta a un predicado, con
unos argumentos concretos, se
denominaobjetivo(en ingls, goal).

En Prolog los llamaremos hechos; Debemos tener en


cuenta que: Los nombres de todos los objetos y
relaciones deben comenzar con una letra minscula.
Primero se escribe la relacin o propiedad: predicado
Y los objetos se escriben separndolos mediante
comas y encerrados entre parntesis: argumentos. Al
final del hecho debe ir un punto (".").
simbolo_de_predicado(arg1,arg2,...,argn).
Ejemplos
El caso ms bsico es aqul que no contiene variables:son
hermanos('Juan','Maria'). Este objetivo solamente puede tener una
solucin (verdadero o falso).
Si utilizamos una variable libre:son_hermanos('Juan',X), es posible
que existan varios valores para dicha variable que hacen cierto el
objetivo.
Por ejemplo paraX = 'Maria', y paraX = 'Luis'.
Tambin es posible tener varias variables libres:son_hermanos(Y,Z).
En este caso obtenemos todas las combinaciones de ligaduras para
las variables que hacen cierto el objetivo.
Por ejemplo,X = 'Juan' y Z = 'Maria'es una solucin.X = 'Juan' y Z
= 'Luis'es otra solucin.
Bibliografas
Marisa Navarro. (2008-09). Curso de programacin lgica. 25-03-17, de - Sitio web:
http://www.sc.ehu.es/jiwhehum2/prolog/Temario/Tema3.pdf

Marisa Navarro. (2008-09). Otros aspectos de Prolog. 25-03-17, de - Sitio web:


http://www.sc.ehu.es/jiwhehum2/prolog/Temario/Tema4.pdf

ngel. (2002). Curso avanzado Prolog. 25-03-17, de - Sitio web: http://


programacion.net/articulo/curso_avanzado_de_prolog_166/4

Mc Darson. (2014). Representacin Clausada del Conocimiento. 25-03-17, de - Sitio web:


https://prezi.com/xy0jz5yvsqzi/46-representacion-clausada-del-conocimiento/

Shane Ortma. (03 diciembre 2014).Semntica de los programas Lgicos. 25-03-17, de -


Sitio web:
https://prezi.com/6zmwikpt9zvr/copy-of-semantica-de-los-programas-logicos/

Annimo. ( - ).Tutorial Bsico de programacin en Prolog. 25-03-17, de - Sitio web:


https://www.dsi.fceia.unr.edu.ar/downloads/IIA/recursos/Tutorial%20de%20%20Prolog.pdf