16
Instituto Tecnológico Superior de Valladolid. Ingeniería en Sistemas Computacionales Nombre de la Materia: Programación Lógica Y funcional Tarea: Proyecto Integrador Maestro: Antonio de Jesús Cab Balam Integrantes: Julia María Hernández Solís. Daniel Aminadab Puc Nahuat. José Fernando Cahum Pech Fecha: 05/06/2015 Semestre: 8º A

CAHUM_JOSE_U4_A2

Embed Size (px)

DESCRIPTION

trabajo

Citation preview

  • 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. Creado en los aos 70 en la Universidad de Aix-Marseille.

    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 */. 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

    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.

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

    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.

    CLIPS

    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).

    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.

    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). Meta: A quin le gusta Mara? X=juan; X=jorge; no ?- Le_gusta(X,Y). Responde con todas las combinaciones.

  • le_gusta_por(juan,maria,ojos grandes). A Juan le gusta Mara por sus grandes ojos. 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