You are on page 1of 16

Instituto Tecnolgico Superior

de Valladolid.

Ingeniera en Sistemas Computacionales


Nombre de la Materia: Programacin Lgica Y
funcional

Tarea: Proyecto Integrador

Maestro: Antonio de Jess Cab Balam

Integrantes:

Julia Mara Hernndez Sols.

Daniel Aminadab Puc Nahuat.

Jos Fernando Cahum Pech

Fecha: 05/06/2015

Semestre: 8 A

1. IDENTIFICAR LOS CONCEPTOS BSICOS DE LA PROGRAMACIN LGICA

Programacin lgica.
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los subparadigmas de
programacin dentro de la programacin declarativa son: programacin
funcional, programacin con restricciones, programas DSL (de dominio
especfico) e hbridos.
Programacin por restricciones.
La Programacin por restricciones es un paradigma de la programacin en
informtica, donde las relaciones entre las variables son expresadas en
trminos de restricciones (ecuaciones). Actualmente es usada como una
tecnologa de software para la descripcin y resolucin de problemas
combinatorios particularmente difciles, especialmente en las reas de
planificacin y programacin de tareas (calendarizacin).
Programacin funcional.
La programacin funcional es un paradigma de programacin declarativa
basado en la utilizacin de funciones aritmticas que no maneja datos mutables
o de estado.
Programacin declarativa
La Programacin Declarativa, en contraposicin a la programacin imperativa
es un paradigma de programacin que est basado en el desarrollo de
programas especificando o "declarando" un conjunto de condiciones,
proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que
describen el problema y detallan su solucin.
Paradigma de programacin.
Un paradigma de programacin es una propuesta tecnolgica adoptada por
una comunidad de programadores cuyo ncleo central es incuestionable en

cuanto a que nicamente trata de resolver uno o varios problemas claramente


delimitados.
Calculo lambda.
El clculo lambda es un sistema formal diseado para investigar la definicin
de funcin, la nocin de aplicacin de funciones y la recursin.
Programacin imperativa.
La programacin imperativa, en contraposicin a la programacin declarativa,
es un paradigma de programacin que describe la programacin en trminos
del estado del programa y sentencias que cambian dicho estado. Los
programas imperativos son un conjunto de instrucciones que le indican al
computador cmo realizar una tarea.
Recursin.
Recurrencia, recursin o recursividad es la forma en la cual se especifica un
proceso basado en su propia definicin
Programacin lgica.
La programacin lgica es un tipo de paradigmas de programacin dentro del
paradigma de programacin declarativa. El resto de los sub paradigmas de
programacin dentro de la programacin declarativa son: programacin
funcional, programacin con restricciones, programas DSL (de dominio
especfico) e hbridos. La programacin funcional se basa en el concepto de
funcin (que no es ms que una evolucin de los predicados), de corte ms
matemtico. La programacin lgica gira en torno al concepto de predicado, o
relacin entre elementos.
Programa
La unin de una secuencia de instrucciones que un computador puede
interpretar y ejecutar y un conjunto de estructuras de datos que almacenan la
informacin sobre la que la operan las instrucciones
Lenguaje de programacin.

Es una tcnica de comunicacin estilizada que se utiliza para controlar el


comportamiento de una maquina (usualmente un computador)

Prolog.
Es un Lenguaje de Programacin diseado para representar y utilizar el
conocimiento que se tiene sobre un determinado dominio. Los programas en
Prolog responden preguntas sobre el tema del cual tienes conocimiento.
Sistemas de informacin.
Un sistema de informacin es un conjunto de elementos orientados al
tratamiento y administracin de datos e informacin, organizados y listos para
su uso posterior, generados para cubrir una necesidad o un objetivo.

2. Describir las clusulas de Horn y resolucin SLD, para identificar reglas de


inferencia lgica y emplearlas en la representacin del conocimiento.

Clusulas de Horn.
Una clusula de Horn es una regla de inferencia lgica con una serie de
premisas (cero, una o ms), y un nico consecuente. Las clusulas de Horn
son las instrucciones bsicas del lenguaje de programacin Prolog, de
paradigma declarativo. Una clusula de Horn es una clusula (una disyuncin
de literales), con a lo sumo, uno positivo literal. Ejemplo de una clusula de
Horn.
Una clusula de Horn con exactamente un literal positivo es una clusula
definitiva, una clusula de Horn sin literales positivos a veces se denomina
"clusula de un objetivo", sobre todo en la lgica de programacin.
Una frmula de Horn es una forma normal conjuntiva cuyas clusulas son
todos de Horns, en otras palabras, se trata de una conjuncin de clusulas de
Horn. Un doble clusula de Horn es una clusula con a lo sumo, uno negativo
literal. Ejemplo de una formula.

Hay dos tipos de clusulas de Horn.


Las clusulas determinadas (definite clauses), o clusulas de Horn con
cabeza son las que slo tienen un literal positivo. Caso particular son las no
tienen ms que ese literal positivo, que representan hechos, es decir,
conocimiento factual.
Los objetivos determinados (definite goals), o clusulas de Horn sin
cabeza son las que no tienen ningn literal positivo:

Reglas
Las reglas engloban todos los casos en el siguiente sentido:
Un hecho es una regla con cuerpo vaco
Un objetivo es una regla con cabeza vaca
Y el xito es una regla con cabeza y cuerpo vacos
Predicados y programas lgicos.
Un predicado p queda denido por el conjunto de clusulas (hechos y reglas)
cuyas cabezas tienen ese smbolo de predicado.
Un programa lgico es un conjunto de deniciones de predicados (es decir, un
conjunto de clusulas denidas: hechos y reglas).
Resolucin SLD.
La resolucin general es un mecanismo muy potente de demostracin pero
tiene un alto grado de indeterminismo: en la seleccin de las clausulas con las
que hacer resolucin y en la seleccin de los literales a utilizar en la resolucin.
Ejemplo.

Los hechos y las reglas se denominan clausulas definidas: Los hechos


representan hechos acerca de los objetos (de nuestro universo de discurso),
relaciones elementales entre estos objetos las reglas expresan relaciones
condicionales entre los objetos, dependencias. Un hecho es una regla con
cuerpo vaco un objetivo es una regla con cabeza vaca y el xito es una regla
con cabeza y cuerpo vacos. En las clusulas de Horn se trabaja con
secuencias de literales en vez de conjuntos Esto implica dos cosas: los literales
pueden aparecer repetidos en el cuerpo hay un orden en los literales del
cuerpo.
El acrnimo SLD:

La S indica que se est usando una regla ja para seleccionar el literal sobre el
que operara el paso de resolucin (una regla de computacin).

La L indica que el proceso es lineal puesto que siempre se usa como padre en
el paso de la resolucin al ms reciente resolvente (es la clusula central, la
clusula lateral es precisamente la que se toma usando al regla de
computacin).

La D indica que los programas son conjuntos de clusulas definidas.

Elementos de la semntica de la programacin lgica para interpretar el conocimiento y


aplicarlo en su representacin.
Investigar las caractersticas de un lenguaje de programacin lgica,
Clips
Clips es una herramienta para construir sistemas expertos.

CLIPS permite integracin completa con otros lenguajes de programacin como C o


Ada.
Puede ser llamado desde un lenguaje procedural, realizando su funcin y devolver el
control al programa que le llam.
Tambin se puede definir cdigo procedural como funciones externas.
Cuando el cdigo externo finaliza su ejecucin devuelve el control a CLIPS
Es un entorno completo para la construccin de SE basados en reglas y/o objetos.
La versin estndar de CLIPS proporciona ayuda on-line y un editor integrado.
Distingue maysculas y minsculas (case-sensitive), igual que el lenguaje C.
Se compone bsicamente de reglas definidas, y est basado en texto que incluyen
herramientas.
Su sintaxis est basada en la sintaxis de ART (otra herramienta para el desarrollo de
sistemas expertos).
Representacin del conocimiento: CLIPS proporciona soporte tres paradigmas de
programacin diferentes: conocimiento basado en reglas, orientado a los objetos y
conocimiento procedimental.
Portabilidad: CLIPS es un paquete escrito en lenguaje C, de forma que es un paquete
muy portable que ha sido probado en muchos tipos de sistemas diferentes sin realizar
cambios en los fuentes. De este modo, hay versiones disponibles de CLIPS para
ordenadores tipo pC sobre entorno Windows, para Macintosh, versiones UNIX sobre
ordenadores VAX y Sun, etc.
Integracin/Extensibilidad: CLIPS puede combinarse con cdigo escrito en lenguajes
como C, FORTRAN o ADA. CLIPS puede tambin ser extendido por un usuario con
facilidad a travs de varios protocolos bien definidos.
Desarrollo interactivo: La versin estndar de CLIPS proporciona un entorno
interactivo, en forma de intrprete de comandos, que incluye ayudas para depuracin,
ayuda on-line y un editor integrado.
Verificacin/validacin: CLIPS incluye cierto nmero de caractersticas para realizar la
verificacin y validacin de sistemas expertos, entre las que se incluyen soporte para
realizar diseo modular y particionamiento de la base de conocimiento, comprobacin
de las reglas a nivel tanto de los valores de los slots como de los argumentos de las
funciones y anlisis semntico de los patrones de las reglas para determinar si las
inconsistencias en stas evitaran la activacin de las reglas o generaran errores.
Muy documentado: CLIPS es un paquete muy documentado, tanto a nivel de
Manuales de Usuario como a nivel de Manuales de Referencia y de Cdigo.

Elementos de la semntica de la programacin lgica para interpretar el


conocimiento y aplicarlo en su representacin.
Sintaxis: qu expresiones son formulas?
Semntica: qu significa que una frmula F es consecuencia de un conjunto de
frmulas S?: S |= F

Clculo: qu significa que una frmula F puede deducirse a partir de un conjunto de


frmulas S?: S F
Propiedades:
Potencia expresiva
Adecuacin: S F = S |= F
Completitud: S |= F = S F
Decidibilidad
Complejidad
La semntica debe proporcionarnos:
Nocin de verdad: funcin de verdad
Significado de las frmulas: especificacin
Nocin de consecuencia lgica: conclusiones
Valores de verdad: y (utilizaremos False y True)

Funciones de verdad
fv : {False,True} {False,True}
fv(i) =
True si i = False
False si i = True
fv : {False,True}
2 {False,True}
fv(i, j) =
True si i = j = True
False en otro caso
fv : {False,True}
2 {False,True}

fv(i, j) =
False si i = j = False
True en otro caso

Funciones de verdad
fv : {False,True}
2 {False,True}
fv(i, j) =
False si i = True y j = False
True en otro caso
fv : {False,True}
2 {False,True}
fv(i, j) =
True si i = j
False en otro caso

Interpretacin:
Una interpretacin I es un conjunto de smbolos proposicionales
Interpretaciones: Conjunto de todas las interpretaciones
sig : FProp Interpretaciones {False,True}
sig(p, I) =
True si p I
False en otro caso
sig(F, I) = fv(sig(F, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))
sig(F G, I) = fv(sig(F, I),sig(G, I))

sig(F G, I) = fv(sig(F, I),sig(G, I))


sig(F G, I) = fv(sig(F, I),sig(G, I))

Ejemplo: F = (p q) (q r)
I = {p,r}
sig(F, I) = sig((p q) (q r), I)
= fv(sig(p q, I),sig(q r, I))
= fv(sig(p q, I),sig(q r, I))
= fv(fv(sig(p, I),sig(q, I)),
fv(sig(q, I),sig(r, I)))
= fv(fv(True, False), fv(fv(sig(q, I)),True))
= fv(True, fv(fv(False),True))
= fv(True, fv(True,True))
= fv(True

Lenguajes de
Programacin

Concepto

Caractersticas

Tipo de Sintaxis

Origen

Forma de Definirlos

PROLOG

Prolog es un lenguaje de
programacin especialmente
indicado para modelar problemas
que impliquen objetos y las
relaciones entre ellos. Est
basado en los siguientes
mecanismos bsicos: unificacin,
estructuras de datos basadas en
rboles
y backtracking automtico.

Prolog est basado en


la lgica de primer
orden, es aquella que
resuelve problemas
formulados con una
serie de objetos y
relaciones entre ellos.

Tiene una sintaxis y


semntica simples.
Slo busca
relaciones entre los
objetos creados, las
variables y las listas,
que son sus
estructuras bsicas.

Proveniente del
francs
PROgrammation en
LOGique.

PROLOG Se compone de
hechos (datos) y un
conjunto de reglas, es
decir, relaciones entre
objetos de la base de
datos.
Los comentarios se
definen entre los smbolos
/* y */.

Creado en los aos


70 en la
Universidad de AixMarseille.

Una llamada concreta a


un predicado o a una
determinada funcin, con
unos argumentos
concretos, se denomina
objetivo.
ALF

Este lenguaje combina la


programacin lgica con
la programacin
funcional. Alf puede
mezclar expresiones y
ecuaciones.

Usa reglas de
resolucin para evaluar
los literales y reglas de
estrechamiento.

Es open source por lo que


cualquier usuario puedo
introducir sus funciones y
modificar a su gusto.

LISP

CLIPS

El nombre que se le dio a este


lenguaje, Lisp (List-Processing),
porque fue creado principalmente
para el procesamiento de listas.
Desde el punto de vista ms
amplio del trmino.

Es uno de los primeros


CLIPS fue escrito en C
con el lenguajes de
alto nivel y junto fin de
hacerlo ms portable y
con Prolog el lenguaje
rpido. Simblico ms
usado en Lenguaje
Artificial.

La intercambiabilidad
del cdigo y los datos
tambin da a Lisp su
instantneamente
reconocible sintaxis.

Clips es una herramienta para


construir sistemas expertos
creada por la NASA en el ao
1985. Es una herramienta muy
potente que presenta grandes
posibilidades y que se ha utilizado
bastante a nivel mundial.
Se dise para facilitar el
desarrollo de software que
modele el conocimiento humano.

CLIPS fue escrito en C


con el fin de hacerlo
ms portable y rpido

Su sintaxis est
basada en la sintaxis
de ART (otra
herramienta para el
desarrollo de
sistemas expertos).

El nombre LISP
deriva del "List
Processing"
(Proceso de Listas).
Fue desarrollado en
1954 por John
McCarthy.

CLIPS es un
acrnimo de C,
Lenguage
Integrated
Produccin Sistema
(Sistema de
Produccin
Integrado en
Lenguaje C).
Fue creado a partir
de 1984, en el
Lyndon B. Johnson
Space de la NASA.

LISP Se compone de
listas encadenadas y por
un conjunto de
instrucciones o reglas.
Los comentarios se
definen con el smbolo ;
(punto y coma).
Una llamada de funcin o
una forma sintctica es
escrita como una lista,
con la funcin o el nombre
del operador en primer
lugar, y los argumentos a
continuacin.

Se compone bsicamente
de reglas definidas, y est
basado en texto que
incluyen herramientas.
Los comentarios se
colocan detrs de un
(punto y coma) (;).
Una funcin comienza con
un parntesis izquierdo,
seguido por el nombre de
la funcin y a continuacin
le siguen los argumentos
de la funcin separados
por uno o ms espacios.
La llamada a la funcin
finaliza con un parntesis
de cierre.

Cdigo Que utiliza la programacin lgica.


>Valioso(oro).
Valioso es un predicado, Oro es el elemento (constantes en minsculas).
>Valioso.
Este predicado no tiene elementos, tiene aridad 0.
>Valioso(plata).
>Valioso(bronce).

"La plata es valioso", "el bronce es valioso". Todos estos predicados se


escriben en un "programa" de Prolog. Tras "correr" el programa, se pueden
hacer estas consultas:

?- Valioso(oro). Es valioso el oro? Esta es una meta


Yes

Si, es la respuesta

?- Valioso(X.).

X es una variable, por ello va en mayscula

X=oro;

Esta es una respuesta. Al agregar el punto y coma se le

X=plata;

est pidiendo otra respuesta que satisface la meta

X=bronce;
no

Cuando ya no encuentra ms respuestas responde con "no"

Programa.
En este programa se establecen las reglas, las cuales se realizan las consultas
y mediante la lgica nos dar la respuesta indicada.
>Le_gusta(juan,maria). A Juan le gusta Mara
>Le_gusta(pedro,carla).
>Le_gusta(jorge,maria). A estos predicados (de aridad 2) tambin se les
conoce como hechos.
?- Le_gusta(X,maria).
X=juan;
X=jorge;
no

Meta: A quin le gusta Mara?

?- Le_gusta(X,Y).

Responde con todas las combinaciones.

le_gusta_por(juan,maria,ojos grandes).
grandes ojos.

A Juan le gusta Mara por sus


Tiene Aridad 3.

Conclusin:
Daniel Aminadab Puc Nahuat.
En este trabajo se investig sobre la programacin lgica que es un paradigma
de programacin que se basa mediante la lgica de primer orden, la
programacin lgica tiene sus lenguajes de programacin alguna de ellas Clisp,
Prolog, alf entre otros las cuales se mencionan en el cuadro comparativo que
se realiz en los puntos 5, entre ella mencionamos la forma en que declaran
sus reglas, su semntica, la sintaxis, y sus funciones comparando los entre s,
la programacin lgica como su nombre lo dice al momento de hacer las
sentencias en los programas, especifican claramente las reglas de las cuales al
momento de ejecutar las sentencias va ir buscando la respuesta de tal manera
que si se encuentra de volver un valor positivo, sino esto seguir buscando
hasta que haya terminado de buscar y comparar todo sino encuentra esto nos
devolver una respuesta falsa. De igual manera se realiz la investigacin de
un programa que utiliza la programacin lgica la cual est desarrollada en
Prolog y con un poco de explicacin, el programa en si tiene guardad las
sentencias o reglas despus se realiza las consultas, si la consulta est dentro
del programa guardada esto de volver el valor adecuado de igual forma si no
encuentra la respuesta.

Conclusin Julia Hernndez Sols.


La programacin lgica es un paradigma de programacin basado en la lgica
de primer orden, generalmente se usa un mecanismo que se llama resolucin
SLD (algo as como resolucin por seleccin lineal de clusulas definidas) que
se encarga de obtener todas las posibles formas de satisfacer el objetivo
planteado, el lenguaje de programacin lgica por excelencia es Prolog, cuya
implementacin ms extendida (al menos en Windows) es SWI-Prolog. Es un
lenguaje puramente lgico, por lo que normalmente se suele usar para partes
muy concretas de un sistema, mezclndolo con otros lenguajes, un lenguaje de
primer orden consiste en un conjunto de smbolos de funcin, conjunto de
constantes, conjunto numerable de smbolos de predicado, existen diferentes
lenguajes lgicos uno de los ms usuales mencionados por anterioridad es el
lenguaje Prolog.
Jos Fernando Cahum Pech
En este trabajo integrador se trat sobre la programacin lgica de la cual se
dio a conocer el concepto y el paradigma de la programacin lgica. Tambin
se describi la clusula de Horn dando a conocer sobre ello con toda
informacin y ejemplos. Se llama clusula de Horn aquella que tiene como
mximo un literal positivo, de la cual nos dice que hay dos tipos y son: las
clausulas determinadas y los objetivos determinados, tambin se dio a conocer
sobre algunos elementos de la programacin lgica as como tambin contiene
las caractersticas de un lenguaje de programacin excepto lo que vimos en
clase, as como la realizacin de un cuadro comparativo de dichos lenguajes de
programacin lgica, tambin se investig un cdigo relacionado con el
lenguaje de programacin lgica y se dio a conocer en este documentos. El
estudio del lenguaje de programacin es tan interesante porque se trata de la
forma de cmo se puede programar a un lgicamente a un sistema para que se

parezca lo ms idntico a un ser humado as como en esta materia da a


conocer sobre la inteligencia artificial. Recomiendo que si estn interesados en
aprender sobre cmo acta y programar un sistema inteligente que se adentren
al tema porque es tan interesante.

Bibliografa.
http://www.amzi.com/articles/code07_whitepaper.
http://www.dc.uba.ar/materias/plp/cursos/2012/cuat1/descargas/teoricas/p
l1.pdf
http://www.cs.upc.edu/~bejar/ia/transpas/lab/clips-n.pdf
http://elvex.ugr.es/decsai/intelligent/workbook/ai/CLIPS.pdf
http://www.uco.es/users/sventura/misc/TutorialCLIPS/TutorCLIPS02.htm

You might also like