SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
PD Tema 12: Introducción a la programación lógica con Prolog




                            Lógica informática (2011–12)
          Tema 12: Introducción a la programación lógica con Prolog


                                     José A. Alonso Jiménez
                                      Andrés Cordón Franco
                                     María J. Hidalgo Doblado

                                  Grupo de Lógica Computacional
                          Departamento de Ciencias de la Computación e I.A.
                                       Universidad de Sevilla




                                                                              1 / 43
PD Tema 12: Introducción a la programación lógica con Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               2 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog
         Deducción Prolog en lógica proposicional
         Deducción Prolog en lógica relacional
         Deducción Prolog en lógica funcional

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo

                                                               3 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Base de conocimiento y objetivo:
                 Base de conocimiento:
                         Regla 1: Si un animal es ungulado y tiene rayas negras, entonces
                         es una cebra.
                         Regla 2: Si un animal rumia y es mamífero, entonces es ungulado.
                         Regla 3: Si un animal es mamífero y tiene pezuñas, entonces es
                         ungulado.
                         Hecho 1: El animal es mamífero.
                         Hecho 2: El animal tiene pezuñas.
                         Hecho 3: El animal tiene rayas negras.
                 Objetivo: Demostrar a partir de la base de conocimientos que el
                 animal es una cebra.




                                                                                            4 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Programa:

         es_cebra    :- es_ungulado, tiene_rayas_negras.       %R1
         es_ungulado :- rumia, es_mamífero.                    %R2
         es_ungulado :- es_mamífero, tiene_pezuñas.            %R3
         es_mamífero.                                          %H1
         tiene_pezuñas.                                        %H2
         tiene_rayas_negras.                                   %H3
         Sesión:
          > pl
          Welcome to SWI-Prolog (Multi-threaded, Version 5.6.20)
          Copyright (c) 1990-2006 University of Amsterdam.
          ?- [animales].
          Yes
          ?- es_cebra.                                           5 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Árbol de deducción:




                                                               6 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica proposicional



Deducción Prolog en lógica proposicional
         Demostración por resolución SLD:




                                                               7 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Base de conocimiento:
                 Hechos 1-4: 6 y 12 son divisibles por 2 y por 3.
                 Hecho 5: 4 es divisible por 2.
                 Regla 1: Los números divisibles por 2 y por 3 son divisibles por 6.
         Programa:

         divide(2,6).                                               %   Hecho   1
         divide(2,4).                                               %   Hecho   2
         divide(2,12).                                              %   Hecho   3
         divide(3,6).                                               %   Hecho   4
         divide(3,12).                                              %   Hecho   5
         divide(6,X) :- divide(2,X), divide(3,X).                   %   Regla   1



                                                                                       8 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Símbolos:
                 Constantes: 2, 3, 4, 6, 12
                 Relación binaria: divide
                 Variable: X
         Interpretaciones de la Regla 1:
                 divide(6,X) :- divide(2,X), divide(3,X).
                 Interpretación declarativa:
                 (∀X )[divide(2, X ) ∧ divide(3, X ) → divide(6, X )]
                 Interpretación procedimental.
         Consulta: ¿Cuáles son los múltiplos de 6?
          ?- divide(6,X).
          X = 6 ;
          X = 12 ;
          No
                                                                        9 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica relacional



Deducción Prolog en lógica relacional
         Árbol de deducción:




         Comentarios:
                 Unificación.
                 Cálculo de respuestas.
                 Respuestas múltiples.
                                                               10 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Representación de los números naturales:
              0, s(0), s(s(0)), . . .
         Definición de la suma:

         0 + Y = Y
         s(X) + Y = s(X+Y)
         Programa

         suma(0,Y,Y).                                          % R1
         suma(s(X),Y,s(Z)) :- suma(X,Y,Z).                     % R2
         Consulta: ¿Cuál es la suma de s(0) y s(s(0))?
          ?- suma(s(0),s(s(0)),X).
          X = s(s(s(0)))
          Yes
                                                                      11 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               12 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 ¿Cuál es la resta de s(s(s(0))) y s(s(0))?
                 Sesión:
                   ?- suma(X,s(s(0)),s(s(s(0)))).
                   X = s(0) ;
                   No




                                                               13 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               14 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 Pregunta: ¿Cuáles son las soluciones de la ecuación
                      X + Y = s(s(0))?
                 Sesión:
                   ?- suma(X,Y,s(s(0))).
                   X = 0         Y = s(s(0)) ;
                   X = s(0)      Y = s(0) ;
                   X = s(s(0)) Y = 0 ;
                   No




                                                                       15 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               16 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Consulta:
                 Pregunta: resolver el sistema de ecuaciones
                      1+X =Y
                      X +Y =1
                 Sesión:
                   ?- suma(s(0),X,Y), suma(X,Y,s(0)).
                   X = 0
                   Y = s(0) ;
                   No




                                                               17 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  El sistema deductivo de Prolog
     Deducción Prolog en lógica funcional



Deducción Prolog en lógica funcional
         Árbol de deducción:




                                                               18 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog
        Definición de relaciones sobre listas

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo



                                                               19 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog




Representación de listas
   ?- [X|Y] =            [a,b].
   X = a
   Y = [b]
   ?- [X|Y] =            [a,b,c,d].
   X = a
   Y = [b, c,            d]
   ?- [X,Y|Z]            = [a,b,c,d].
   X = a
   Y = b
   Z = [c, d]




                                                               20 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Definición de concatenación (append)
         Especificación: conc(A,B,C) se verifica si C es la lista obtenida
         escribiendo los elementos de la lista B a continuación de los
         elementos de la lista A. Por ejemplo,
          ?- conc([a,b],[b,d],C).
          C =[a,b,b,d]
         Definición 1:

         conc(A,B,C) :- A=[], C=B.
         conc(A,B,C) :- A=[X|D], conc(D,B,E), C=[X|E].
         Definición 2:

         conc([],B,B).
         conc([X|D],B,[X|E]) :- conc(D,B,E).
                                                                           21 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Consultas con la relación de concatenación
         Analogía entre la definición de conc y la de suma,
         ¿Cuál es el resultado de concatenar las listas [a,b] y [c,d,e]?
          ?- conc([a,b],[c,d,e],L).
          L = [a, b, c, d, e]
         ¿Qué lista hay que añadirle a la lista [a,b] para obtener
         [a,b,c,d]?
          ?- conc([a,b],L,[a,b,c,d]).
          L = [c, d]
         ¿Qué dos listas hay que concatenar para obtener [a,b]?
          ?- conc(L,M,[a,b]).
          L = []           M = [a, b] ;
          L = [a]          M = [b] ;
          L = [a, b] M = [] ;
          No
                                                                           22 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Árbol de deducción de ?- conc(L,M,[a,b]).




                                                               23 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Definición de la relación de pertenencia (member)
         Especificación: pertenece(X,L) se verifica si X es un elemento
         de la lista L.
         Definición 1:

         pertenece(X,[X|L]).
         pertenece(X,[Y|L]) :- pertenece(X,L).

         Definición 2:

         pertenece(X,[X|_]).
         pertenece(X,[_|L]) :- pertenece(X,L).




                                                                        24 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Consultas con la relación de pertenencia
   ?- pertenece(b,[a,b,c]).
   Yes
   ?- pertenece(d,[a,b,c]).
   No
   ?- pertenece(X,[a,b,a]).
   X = a ;
   X = b ;
   X = a ;
   No
   ?- pertenece(a,L).
   L = [a|_G233] ;
   L = [_G232, a|_G236] ;
   L = [_G232, _G235, a|_G239]
   Yes                                                         25 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Las listas en Prolog
     Definición de relaciones sobre listas



Árbol de deducción de ?- pertenece(a,L).




                                                               26 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               27 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Ejemplos de operadores aritméticos
         Ejemplos de notación infija y prefija en expresiones aritméticas:
          ?- +(X,Y) = a+b.
          X = a
          Y = b
          ?- +(X,Y) = a+b+c.
          X = a+b
          Y = c
          ?- +(X,Y) = a+(b+c).
          X = a
          Y = b+c
          ?- a+b+c = (a+b)+c.
          Yes
          ?- a+b+c = a+(b+c).
          No
                                                                           28 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Ejemplos de asociatividad y precedencia
         Ejemplos de asociatividad:
          ?- X^Y = a^b^c.
          X = a         Y = b^c
          ?- a^b^c = a^(b^c).
          Yes
         Ejemplo de precedencia
          ?- X+Y = a+b*c.
          X = a         Y = b*c
          ?- X*Y = a+b*c.
          No
          ?- X*Y = (a+b)*c.
          X = a+b       Y = c
          ?- a+b*c = (a+b)*c.
          No                                                   29 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Operadores en Prolog




Definición de operadores
         Definición (ejemplo_operadores.pl)

         :-op(800,xfx,estudian).
         :-op(400,xfx,y).

         juan y ana estudian lógica.
         Consultas
          ?- [ejemplo_operadores].
          ?- Quienes estudian lógica.
           Quienes = juan y ana
           ?- juan y Otro estudian Algo.
           Otro = ana
           Algo = lógica
                                                               30 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               31 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Ejemplo de nota sin corte
         nota(X,Y) se verifica si Y es la calificación correspondiente a la
         nota X; es decir, Y es suspenso si X es menor que 5, Y es
         aprobado si X es mayor o igual que 5 pero menor que 7, Y es
         notable si X es mayor que 7 pero menor que 9 e Y es
         sobresaliente si X es mayor que 9. Por ejemplo,
          ?- nota(6,Y).
          Y = aprobado;
          No

         nota(X,suspenso)                            :-    X   < 5.
         nota(X,aprobado)                            :-    X   >= 5, X < 7.
         nota(X,notable)                             :-    X   >= 7, X < 9.
         nota(X,sobresaliente)                       :-    X   >= 9.

                                                                              32 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Deducción en el ejemplo sin corte
         Árbol de deducción de ?- nota(6,Y).




                                                               33 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Ejemplo de nota con cortes
         Definición de nota con cortes

         nota(X,suspenso)       :- X < 5, !.
         nota(X,aprobado)       :- X < 7, !.
         nota(X,notable)        :- X < 9, !.
         nota(X,sobresaliente).




                                                               34 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Control mediante corte




Deducción en el ejemplo con cortes




         ¿Un 6 es un sobresaliente?
          ?- nota(6,sobresaliente).
          Yes
                                                               35 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Tema 12: Introducción a la programación lógica con Prolog

  1. El sistema deductivo de Prolog

  2. Las listas en Prolog

  3. Operadores en Prolog

  4. Control mediante corte

  5. Negación como fallo




                                                               36 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Definición de la negación como fallo
         Definición de la negación como fallo not:

         no(P) :- P, !, fail.                                  % No 1
         no(P).                                                % No 2




                                                                        37 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Programa con negación
         Programa:

         aprobado(X) :-                                        % R1
            no(suspenso(X)),
            matriculado(X).
         matriculado(juan).                                    % R2
         matriculado(luis).                                    % R3
         suspenso(juan).                                       % R4

         Consultas:
          ?- aprobado(luis).
          Yes
           ?- aprobado(X).
           No
                                                                      38 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(luis).




                                                               39 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(X).




                                                               40 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Modificación del orden de los literales
         Programa:

         aprobado(X) :-                                  % R1
            matriculado(X),
            no(suspenso(X)).
         matriculado(juan).                              % R2
         matriculado(luis).                              % R3
         suspenso(juan).                                 % R4

         Consulta:
          ?- aprobado(X).
          X = luis
          Yes


                                                                41 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Negación como fallo




Árbol de deducción de ?- aprobado(X).




                                                               42 / 43
PD Tema 12: Introducción a la programación lógica con Prolog
  Bibliografía




Bibliografía
    1. J.A. Alonso (2006) Introducción a la programación lógica con
       Prolog.
                 Cap. 0 (Introducción).
    2. I. Bratko (1990) Prolog Programming for Artificial Intelligence
       (2nd ed.)
                 Cap. 1 (An overview of Prolog) y Cap. 2 (Syntax and meaning of
                 Prolog programs).




                                                                                  43 / 43

Weitere ähnliche Inhalte

Was ist angesagt?

Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Juan Lopez
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oraclevinivaldivieso
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSLUIS5111987
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)Franklin Parrales Bravo
 
Algoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosAlgoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosDaniel Gomez Jaramillo
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortlinkinpark03
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selecciónfigocancun
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesosGiant_serch
 
Protección y Seguridad de los sistemas operativos
Protección y Seguridad de los sistemas operativosProtección y Seguridad de los sistemas operativos
Protección y Seguridad de los sistemas operativosAquiles Guzman
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prologmaxsp5566
 
Gestion entrada y salida
Gestion entrada y salidaGestion entrada y salida
Gestion entrada y salidaDavid Martinez
 
104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesadorMiguel Joshua Godinez Barbosa
 

Was ist angesagt? (20)

Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
Unidad 3 administracion de memoria(recoplilacion de todas las exposiciones)
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 
Manejo de prtg network monitor
Manejo de prtg network monitorManejo de prtg network monitor
Manejo de prtg network monitor
 
Sistema de archivos HPFS
Sistema de archivos HPFSSistema de archivos HPFS
Sistema de archivos HPFS
 
SISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOSSISTEMAS BASADOS EN CONOCIMIENTOS
SISTEMAS BASADOS EN CONOCIMIENTOS
 
ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)ED Unidad 4: Estructuras de datos no lineales (árboles)
ED Unidad 4: Estructuras de datos no lineales (árboles)
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Algoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosAlgoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivos
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Método de ordenamiento por selección
Método de ordenamiento por selecciónMétodo de ordenamiento por selección
Método de ordenamiento por selección
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Organización de archivos
Organización de archivosOrganización de archivos
Organización de archivos
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesos
 
Sistema de Archivos
Sistema de ArchivosSistema de Archivos
Sistema de Archivos
 
Protección y Seguridad de los sistemas operativos
Protección y Seguridad de los sistemas operativosProtección y Seguridad de los sistemas operativos
Protección y Seguridad de los sistemas operativos
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prolog
 
Gestion entrada y salida
Gestion entrada y salidaGestion entrada y salida
Gestion entrada y salida
 
104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador104842258 unidad-2-administracion-de-procesos-del-procesador
104842258 unidad-2-administracion-de-procesos-del-procesador
 

Mehr von José A. Alonso

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.José A. Alonso
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosJosé A. Alonso
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaJosé A. Alonso
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosJosé A. Alonso
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorJosé A. Alonso
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalJosé A. Alonso
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalJosé A. Alonso
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosJosé A. Alonso
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalJosé A. Alonso
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellJosé A. Alonso
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalJosé A. Alonso
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenJosé A. Alonso
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesJosé A. Alonso
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automáticoJosé A. Alonso
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicionalJosé A. Alonso
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellJosé A. Alonso
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenJosé A. Alonso
 

Mehr von José A. Alonso (20)

Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.Tema 12: Analizadores sintácticos funcionales.
Tema 12: Analizadores sintácticos funcionales.
 
Tema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmosTema 23: Técnicas de diseño descendente de algoritmos
Tema 23: Técnicas de diseño descendente de algoritmos
 
I1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsquedaI1M-T19: El TAD de los árboles de búsqueda
I1M-T19: El TAD de los árboles de búsqueda
 
I1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntosI1M-T17: El TAD de los conjuntos
I1M-T17: El TAD de los conjuntos
 
Panorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenadorPanorama de la demostración asistida por ordenador
Panorama de la demostración asistida por ordenador
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
LMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer ordenLMF-T6: Sintaxis y semántica de la lógica de primer orden
LMF-T6: Sintaxis y semántica de la lógica de primer orden
 
LMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicionalLMF-T5b: Aplicaciones de la lógica proposicional
LMF-T5b: Aplicaciones de la lógica proposicional
 
LMF-T5: Resolución proposicional
LMF-T5: Resolución proposicionalLMF-T5: Resolución proposicional
LMF-T5: Resolución proposicional
 
LMF-T4: Formas normales
LMF-T4: Formas normalesLMF-T4: Formas normales
LMF-T4: Formas normales
 
LMF-T3: Tableros semánticos
LMF-T3: Tableros semánticosLMF-T3: Tableros semánticos
LMF-T3: Tableros semánticos
 
LMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicionalLMF-T2: Deducción natural proposicional
LMF-T2: Deducción natural proposicional
 
I1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en HaskellI1M-T21: El TAD de los polinomios en Haskell
I1M-T21: El TAD de los polinomios en Haskell
 
LMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicionalLMF-T1: Sintaxis y semántica de la lógica proposicional
LMF-T1: Sintaxis y semántica de la lógica proposicional
 
LI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer ordenLI-T6: Sintaxis y semántica de la lógica de primer orden
LI-T6: Sintaxis y semántica de la lógica de primer orden
 
LI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. AplicacionesLI-T5b: Algoritmos para SAT. Aplicaciones
LI-T5b: Algoritmos para SAT. Aplicaciones
 
Panorama del razonamiento automático
Panorama del razonamiento automáticoPanorama del razonamiento automático
Panorama del razonamiento automático
 
LI -T5: Resolución proposicional
LI -T5: Resolución proposicionalLI -T5: Resolución proposicional
LI -T5: Resolución proposicional
 
I1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en HaskellI1M2010-T24: Programación dinámica en Haskell
I1M2010-T24: Programación dinámica en Haskell
 
LI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer ordenLI2011-T11: Resolución en lógica de primer orden
LI2011-T11: Resolución en lógica de primer orden
 

Kürzlich hochgeladen

FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...Ars Erótica
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...JoseMartinMalpartida1
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primariaWilian24
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 

Kürzlich hochgeladen (20)

FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 

LI-T12: LI2011-12: Introducción a la programación lógica con Prolog

  • 1. PD Tema 12: Introducción a la programación lógica con Prolog Lógica informática (2011–12) Tema 12: Introducción a la programación lógica con Prolog José A. Alonso Jiménez Andrés Cordón Franco María J. Hidalgo Doblado Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 1 / 43
  • 2. PD Tema 12: Introducción a la programación lógica con Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 2 / 43
  • 3. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica relacional Deducción Prolog en lógica funcional 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 3 / 43
  • 4. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Base de conocimiento y objetivo: Base de conocimiento: Regla 1: Si un animal es ungulado y tiene rayas negras, entonces es una cebra. Regla 2: Si un animal rumia y es mamífero, entonces es ungulado. Regla 3: Si un animal es mamífero y tiene pezuñas, entonces es ungulado. Hecho 1: El animal es mamífero. Hecho 2: El animal tiene pezuñas. Hecho 3: El animal tiene rayas negras. Objetivo: Demostrar a partir de la base de conocimientos que el animal es una cebra. 4 / 43
  • 5. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Programa: es_cebra :- es_ungulado, tiene_rayas_negras. %R1 es_ungulado :- rumia, es_mamífero. %R2 es_ungulado :- es_mamífero, tiene_pezuñas. %R3 es_mamífero. %H1 tiene_pezuñas. %H2 tiene_rayas_negras. %H3 Sesión: > pl Welcome to SWI-Prolog (Multi-threaded, Version 5.6.20) Copyright (c) 1990-2006 University of Amsterdam. ?- [animales]. Yes ?- es_cebra. 5 / 43
  • 6. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Árbol de deducción: 6 / 43
  • 7. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica proposicional Deducción Prolog en lógica proposicional Demostración por resolución SLD: 7 / 43
  • 8. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Base de conocimiento: Hechos 1-4: 6 y 12 son divisibles por 2 y por 3. Hecho 5: 4 es divisible por 2. Regla 1: Los números divisibles por 2 y por 3 son divisibles por 6. Programa: divide(2,6). % Hecho 1 divide(2,4). % Hecho 2 divide(2,12). % Hecho 3 divide(3,6). % Hecho 4 divide(3,12). % Hecho 5 divide(6,X) :- divide(2,X), divide(3,X). % Regla 1 8 / 43
  • 9. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Símbolos: Constantes: 2, 3, 4, 6, 12 Relación binaria: divide Variable: X Interpretaciones de la Regla 1: divide(6,X) :- divide(2,X), divide(3,X). Interpretación declarativa: (∀X )[divide(2, X ) ∧ divide(3, X ) → divide(6, X )] Interpretación procedimental. Consulta: ¿Cuáles son los múltiplos de 6? ?- divide(6,X). X = 6 ; X = 12 ; No 9 / 43
  • 10. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica relacional Deducción Prolog en lógica relacional Árbol de deducción: Comentarios: Unificación. Cálculo de respuestas. Respuestas múltiples. 10 / 43
  • 11. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Representación de los números naturales: 0, s(0), s(s(0)), . . . Definición de la suma: 0 + Y = Y s(X) + Y = s(X+Y) Programa suma(0,Y,Y). % R1 suma(s(X),Y,s(Z)) :- suma(X,Y,Z). % R2 Consulta: ¿Cuál es la suma de s(0) y s(s(0))? ?- suma(s(0),s(s(0)),X). X = s(s(s(0))) Yes 11 / 43
  • 12. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 12 / 43
  • 13. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: ¿Cuál es la resta de s(s(s(0))) y s(s(0))? Sesión: ?- suma(X,s(s(0)),s(s(s(0)))). X = s(0) ; No 13 / 43
  • 14. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 14 / 43
  • 15. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: Pregunta: ¿Cuáles son las soluciones de la ecuación X + Y = s(s(0))? Sesión: ?- suma(X,Y,s(s(0))). X = 0 Y = s(s(0)) ; X = s(0) Y = s(0) ; X = s(s(0)) Y = 0 ; No 15 / 43
  • 16. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 16 / 43
  • 17. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Consulta: Pregunta: resolver el sistema de ecuaciones 1+X =Y X +Y =1 Sesión: ?- suma(s(0),X,Y), suma(X,Y,s(0)). X = 0 Y = s(0) ; No 17 / 43
  • 18. PD Tema 12: Introducción a la programación lógica con Prolog El sistema deductivo de Prolog Deducción Prolog en lógica funcional Deducción Prolog en lógica funcional Árbol de deducción: 18 / 43
  • 19. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog Definición de relaciones sobre listas 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 19 / 43
  • 20. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Representación de listas ?- [X|Y] = [a,b]. X = a Y = [b] ?- [X|Y] = [a,b,c,d]. X = a Y = [b, c, d] ?- [X,Y|Z] = [a,b,c,d]. X = a Y = b Z = [c, d] 20 / 43
  • 21. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Definición de concatenación (append) Especificación: conc(A,B,C) se verifica si C es la lista obtenida escribiendo los elementos de la lista B a continuación de los elementos de la lista A. Por ejemplo, ?- conc([a,b],[b,d],C). C =[a,b,b,d] Definición 1: conc(A,B,C) :- A=[], C=B. conc(A,B,C) :- A=[X|D], conc(D,B,E), C=[X|E]. Definición 2: conc([],B,B). conc([X|D],B,[X|E]) :- conc(D,B,E). 21 / 43
  • 22. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Consultas con la relación de concatenación Analogía entre la definición de conc y la de suma, ¿Cuál es el resultado de concatenar las listas [a,b] y [c,d,e]? ?- conc([a,b],[c,d,e],L). L = [a, b, c, d, e] ¿Qué lista hay que añadirle a la lista [a,b] para obtener [a,b,c,d]? ?- conc([a,b],L,[a,b,c,d]). L = [c, d] ¿Qué dos listas hay que concatenar para obtener [a,b]? ?- conc(L,M,[a,b]). L = [] M = [a, b] ; L = [a] M = [b] ; L = [a, b] M = [] ; No 22 / 43
  • 23. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Árbol de deducción de ?- conc(L,M,[a,b]). 23 / 43
  • 24. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Definición de la relación de pertenencia (member) Especificación: pertenece(X,L) se verifica si X es un elemento de la lista L. Definición 1: pertenece(X,[X|L]). pertenece(X,[Y|L]) :- pertenece(X,L). Definición 2: pertenece(X,[X|_]). pertenece(X,[_|L]) :- pertenece(X,L). 24 / 43
  • 25. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Consultas con la relación de pertenencia ?- pertenece(b,[a,b,c]). Yes ?- pertenece(d,[a,b,c]). No ?- pertenece(X,[a,b,a]). X = a ; X = b ; X = a ; No ?- pertenece(a,L). L = [a|_G233] ; L = [_G232, a|_G236] ; L = [_G232, _G235, a|_G239] Yes 25 / 43
  • 26. PD Tema 12: Introducción a la programación lógica con Prolog Las listas en Prolog Definición de relaciones sobre listas Árbol de deducción de ?- pertenece(a,L). 26 / 43
  • 27. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 27 / 43
  • 28. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Ejemplos de operadores aritméticos Ejemplos de notación infija y prefija en expresiones aritméticas: ?- +(X,Y) = a+b. X = a Y = b ?- +(X,Y) = a+b+c. X = a+b Y = c ?- +(X,Y) = a+(b+c). X = a Y = b+c ?- a+b+c = (a+b)+c. Yes ?- a+b+c = a+(b+c). No 28 / 43
  • 29. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Ejemplos de asociatividad y precedencia Ejemplos de asociatividad: ?- X^Y = a^b^c. X = a Y = b^c ?- a^b^c = a^(b^c). Yes Ejemplo de precedencia ?- X+Y = a+b*c. X = a Y = b*c ?- X*Y = a+b*c. No ?- X*Y = (a+b)*c. X = a+b Y = c ?- a+b*c = (a+b)*c. No 29 / 43
  • 30. PD Tema 12: Introducción a la programación lógica con Prolog Operadores en Prolog Definición de operadores Definición (ejemplo_operadores.pl) :-op(800,xfx,estudian). :-op(400,xfx,y). juan y ana estudian lógica. Consultas ?- [ejemplo_operadores]. ?- Quienes estudian lógica. Quienes = juan y ana ?- juan y Otro estudian Algo. Otro = ana Algo = lógica 30 / 43
  • 31. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 31 / 43
  • 32. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Ejemplo de nota sin corte nota(X,Y) se verifica si Y es la calificación correspondiente a la nota X; es decir, Y es suspenso si X es menor que 5, Y es aprobado si X es mayor o igual que 5 pero menor que 7, Y es notable si X es mayor que 7 pero menor que 9 e Y es sobresaliente si X es mayor que 9. Por ejemplo, ?- nota(6,Y). Y = aprobado; No nota(X,suspenso) :- X < 5. nota(X,aprobado) :- X >= 5, X < 7. nota(X,notable) :- X >= 7, X < 9. nota(X,sobresaliente) :- X >= 9. 32 / 43
  • 33. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Deducción en el ejemplo sin corte Árbol de deducción de ?- nota(6,Y). 33 / 43
  • 34. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Ejemplo de nota con cortes Definición de nota con cortes nota(X,suspenso) :- X < 5, !. nota(X,aprobado) :- X < 7, !. nota(X,notable) :- X < 9, !. nota(X,sobresaliente). 34 / 43
  • 35. PD Tema 12: Introducción a la programación lógica con Prolog Control mediante corte Deducción en el ejemplo con cortes ¿Un 6 es un sobresaliente? ?- nota(6,sobresaliente). Yes 35 / 43
  • 36. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Tema 12: Introducción a la programación lógica con Prolog 1. El sistema deductivo de Prolog 2. Las listas en Prolog 3. Operadores en Prolog 4. Control mediante corte 5. Negación como fallo 36 / 43
  • 37. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Definición de la negación como fallo Definición de la negación como fallo not: no(P) :- P, !, fail. % No 1 no(P). % No 2 37 / 43
  • 38. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Programa con negación Programa: aprobado(X) :- % R1 no(suspenso(X)), matriculado(X). matriculado(juan). % R2 matriculado(luis). % R3 suspenso(juan). % R4 Consultas: ?- aprobado(luis). Yes ?- aprobado(X). No 38 / 43
  • 39. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(luis). 39 / 43
  • 40. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(X). 40 / 43
  • 41. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Modificación del orden de los literales Programa: aprobado(X) :- % R1 matriculado(X), no(suspenso(X)). matriculado(juan). % R2 matriculado(luis). % R3 suspenso(juan). % R4 Consulta: ?- aprobado(X). X = luis Yes 41 / 43
  • 42. PD Tema 12: Introducción a la programación lógica con Prolog Negación como fallo Árbol de deducción de ?- aprobado(X). 42 / 43
  • 43. PD Tema 12: Introducción a la programación lógica con Prolog Bibliografía Bibliografía 1. J.A. Alonso (2006) Introducción a la programación lógica con Prolog. Cap. 0 (Introducción). 2. I. Bratko (1990) Prolog Programming for Artificial Intelligence (2nd ed.) Cap. 1 (An overview of Prolog) y Cap. 2 (Syntax and meaning of Prolog programs). 43 / 43